diff --git a/INDEX b/INDEX new file mode 100644 index 0000000..d9a538a --- /dev/null +++ b/INDEX @@ -0,0 +1,9 @@ +{ + "bind": { + "MANIFEST": "bookstack.json", + "description": "Bookstack wiki", + "name": "Bookstack", + "official": false, + "primary_pkg": null + } +} diff --git a/README.md b/README.md index 2791fdb..4a3edfc 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,19 @@ # Experimental -This plugin is experimental. It has not been testing at all +This plugin is experimental. It seems to work, but pull requests are welcome. # Install -Clone this repository on your FreeNAS server. And run the following command to create a new jail with it. +Clone this repository on your FreeNAS / TrueNAS core server, then run the following command to create a new jail with it. ``` -iocage fetch -P bookstack.json --name bookstack ip4_addr="vnet0|192.168.1.152/24" defaultrouter="192.168.1.1" -``` \ No newline at end of file +iocage fetch -g https://github.com/Adirael/iocage-plugin-bookstack -P bookstack.json --name bookstack dhcp="on" +``` + +If your installation was done by manually downloading the plugin files, set the plugin_repository property to this repo like + +``` +iocage set plugin_repository=ttps://github.com/Adirael/iocage-plugin-bookstack bookstack +``` + +to revieve updates. diff --git a/bookstack.json b/bookstack.json index cfc8613..967627a 100644 --- a/bookstack.json +++ b/bookstack.json @@ -1,35 +1,19 @@ { "name": "bookstack", "plugin_schema": "2", - "release": "11.3-RELEASE", "artifact": "https://github.com/Adirael/iocage-plugin-bookstack.git", + "release": "12.2-RELEASE", "pkgs": [ - "git", - "nginx", - "openssl", - "mariadb102-server", - "php73", - "php73-tidy", - "php73-tokenizer", - "php73-openssl", - "php73-pdo", - "php73-mysqli", - "php73-simplexml", - "php73-mbstring", - "php73-hash", - "php73-json", - "php73-phar", - "php73-filter", - "php73-zlib", - "php73-curl", - "php73-dom", - "php73-gd", - "php73-xml", - "php73-fileinfo", - "php73-xmlwriter", - "php73-session" + "php74", "php74-mbstring", "php74-tokenizer", "php74-pdo", "php74-pdo_mysql", + "php74-openssl", "php74-json", "php74-phar", "php74-filter", + "php74-zlib", "php74-dom", "php74-xml", "php74-xmlwriter", "php74-xmlreader", + "php74-pecl-imagick", "php74-curl", "php74-session", "php74-ctype", + "php74-iconv", "php74-gd", "php74-simplexml", "php74-zip", "php74-filter", + "php74-tokenizer", "php74-calendar", "php74-fileinfo", "php74-intl", + "php74-mysqli", "php74-phar", "php74-opcache", "php74-tidy", + "php74-composer", "mysql80-client", "mysql80-server", "nginx", "git" ], - "packagesite": "http://pkg.FreeBSD.org/FreeBSD:11:amd64/latest", + "packagesite": "http://pkg.FreeBSD.org/FreeBSD:12:amd64/latest", "fingerprints": { "iocage-plugins": [ { diff --git a/overlay/usr/local/etc/nginx/nginx.conf b/overlay/usr/local/etc/nginx/nginx.conf index c832d0f..aa11404 100644 --- a/overlay/usr/local/etc/nginx/nginx.conf +++ b/overlay/usr/local/etc/nginx/nginx.conf @@ -1,7 +1,9 @@ -worker_processes 1; +worker_processes 1; +error_log /var/log/nginx/error.log; +pid /var/run/nginx.pid; events { - worker_connections 1024; + worker_connections 1024; } http { @@ -14,12 +16,16 @@ http { server { listen 80; listen [::]:80; - server_name localhost; + server_name _; client_max_body_size 100M; - root /usr/local/bookstack/public; + root /usr/local/www/bookstack/public; index index.php index.html index.htm; + + access_log /var/log/nginx/bookstack_access.log; + error_log /var/log/nginx/bookstack_error.log; + location / { try_files $uri $uri/ /index.php?$query_string; } @@ -27,6 +33,8 @@ http { location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm.sock; + fastcgi_index index.php; + fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } diff --git a/post_install.sh b/post_install.sh index 1a3a671..6ce1c01 100755 --- a/post_install.sh +++ b/post_install.sh @@ -1,9 +1,7 @@ -# Create user and set up the folders -pw useradd -n sickrage -c "bookstack" -s /sbin/nologin -w no -git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch /usr/local/bookstack +#!/bin/sh -# Install dependencies -# pkg install -y git nginx openssl mariadb102-server php71 php71-tidy php71-tokenizer php71-openssl php71-pdo php71-mysqli php71-simplexml php71-mbstring +# clone release branch +git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch /usr/local/www/bookstack # Enable autostart for php, nginx and mysql sysrc -f /etc/rc.conf nginx_enable="YES" @@ -12,47 +10,46 @@ sysrc -f /etc/rc.conf php_fpm_enable="YES" # Setup php-fpm cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini -sed -i '' -e 's?listen = 127.0.0.1:9000?listen = /var/run/php-fpm.sock?g' /usr/local/etc/php-fpm.d/www.conf -sed -i '' -e 's/;listen.owner = www/listen.owner = www/g' /usr/local/etc/php-fpm.d/www.conf -sed -i '' -e 's/;listen.group = www/listen.group = www/g' /usr/local/etc/php-fpm.d/www.conf -sed -i '' -e 's/;listen.mode = 0660/listen.mode = 0600/g' /usr/local/etc/php-fpm.d/www.conf -sed -i '' -e 's?;cgi.fix_pathinfo=1?cgi.fix_pathinfo=0?g' /usr/local/etc/php.ini +sed -i '' 's|listen = 127.0.0.1:9000|listen = /var/run/php-fpm.sock|' /usr/local/etc/php-fpm.d/www.conf +sed -i '' 's/;listen.owner = www/listen.owner = www/' /usr/local/etc/php-fpm.d/www.conf +sed -i '' 's/;listen.group = www/listen.group = www/' /usr/local/etc/php-fpm.d/www.conf +sed -i '' 's/;listen.mode = 0660/listen.mode = 0660/' /usr/local/etc/php-fpm.d/www.conf +sed -i '' 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /usr/local/etc/php.ini # Start the service -service nginx start 2>/dev/null -service php-fpm start 2>/dev/null -service mysql-server start 2>/dev/null +service nginx start +service php-fpm start +service mysql-server start # Configure mysql -mysql -u root <<-EOF -UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root'; -DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); -DELETE FROM mysql.user WHERE User=''; -DELETE FROM mysql.db WHERE Db='test' OR Db='test_%'; -CREATE USER 'bookstack'@'localhost' IDENTIFIED BY 'password'; -CREATE DATABASE bookstack character set UTF8mb4 collate utf8mb4_bin; -GRANT ALL PRIVILEGES ON *.* TO 'bookstack'@'localhost' WITH GRANT OPTION; -GRANT ALL PRIVILEGES ON bookstack.* TO 'bookstack'@'localhost'; -FLUSH PRIVILEGES; -EOF - -# Install composer -php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" -php composer-setup.php --install-dir=/usr/local/bin --filename=composer -php -r "unlink('composer-setup.php');" +DB_PASS=$(openssl rand -base64 16) +mysql -u root -e "CREATE DATABASE bookstack;" +mysql -u root -e "CREATE USER 'bookstack'@'localhost' IDENTIFIED WITH mysql_native_password BY '$DB_PASS';" +mysql -u root -e "GRANT ALL ON bookstack.* TO 'bookstack'@'localhost';FLUSH PRIVILEGES;" # Install bookstack -cd /usr/local/bookstack || exit -composer install -chown -R www:www /usr/local/bookstack +cd /usr/local/www/bookstack +composer install --no-dev cp .env.example .env # Update env -sed -i '' -e 's?DB_DATABASE=database_database?DB_DATABASE=bookstack?g' /usr/local/bookstack/.env -sed -i '' -e 's?DB_USERNAME=database_username?DB_USERNAME=bookstack?g' /usr/local/bookstack/.env -sed -i '' -e 's?DB_PASSWORD=database_user_password?DB_PASSWORD=password?g' /usr/local/bookstack/.env - -# Regenerate key and intall tables -php artisan key:generate --force -php artisan migrate --force +sed -i '' 's|DB_DATABASE=.*$|DB_DATABASE=bookstack|' /usr/local/www/bookstack/.env +sed -i '' 's|DB_USERNAME=.*$|DB_USERNAME=bookstack|' /usr/local/www/bookstack/.env +sed -i '' "s|DB_PASSWORD=.*\$|DB_PASSWORD=$DB_PASS|" /usr/local/www/bookstack/.env + +# Set proper permissions +chown -R www:www /usr/local/www/bookstack +chmod -R 755 bootstrap/cache public/uploads storage + +# Regenerate key and install tables +php artisan key:generate --no-interaction --force +php artisan migrate --no-interaction --force + +# Reload configs +service php-fpm restart +service nginx reload + +touch /root/PLUGIN_INFO +echo "DATABASE_NAME=bookstack" >> /root/PLUGIN_INFO +echo "DB_USERNAME=bookstack" >> /root/PLUGIN_INFO +echo "DB_PASSWORD=$DB_PASS" >> /root/PLUGIN_INFO