====== Information ====== * Piwigo ((https://www.piwigo.org/)) * Bootstrap Darkroom Theme ((https://piwigo.org/ext/index.php?eid=831)) ((https://doc.piwigo.org/piwigo-themes/bootstrap-darkroom-theme-piwigo)) * [[information:realm_of_espionage|Realm of Espionage]] * https://media.realmofespionage.xyz ===== Prerequisites ===== * [[bsd:server:freebsd_16.0|FreeBSD 16.0]] * [[servers:bsd:freenginx_php_php-fpm|freenginx + PHP + PHP-FPM]] * [[servers:bsd:nginx:lets_encrypt|Certbot (Let's Encrypt)]] * [[servers:bsd:mariadb|MariaDB]] ====== Dependencies ====== * https://piwigo.org/guides/install/requirements * https://github.com/Piwigo/piwigo-videojs/wiki/How-to-add-videos * https://github.com/Piwigo/piwigo-videojs/wiki/Synchronize#requirement su - pkg install git-lite php85-exif php85-gd php85-mysqli php85-mbstring ====== Download Source ====== * https://github.com/Piwigo/Piwigo/commits/master/ * https://github.com/Piwigo/piwigo-bootstrap-darkroom/commits/master/ su - git clone --branch 'master' --depth '1' --recurse-submodules 'https://github.com/Piwigo/Piwigo.git' '/usr/local/www/media' && chown -R 'www':'www' '/usr/local/www/media' git clone --branch 'master' --depth '1' --recurse-submodules 'https://github.com/Piwigo/piwigo-bootstrap-darkroom.git' '/usr/local/www/media/themes/bootstrap_darkroom' && chown -R 'www':'www' '/usr/local/www/media' ====== Database ====== su - mariadb CREATE DATABASE piwigo; CREATE USER piwigo@localhost IDENTIFIED BY 'x'; GRANT ALL PRIVILEGES ON piwigo.* to piwigo@localhost; FLUSH PRIVILEGES;EXIT; ====== nginx + PHP-FPM Configuration ====== ===== PHP-FPM Socket ===== su - ee '/usr/local/etc/php-fpm.d/media.conf' && service 'php_fpm' reload [media] ; User/Group user = "www" group = "www" ; Socket listen = "127.0.0.1:9003" listen.allowed_clients = "127.0.0.1" ; Process Management pm = "ondemand" pm.max_children = "4" pm.process_idle_timeout = "30" ; Logging php_value[log_errors] = "Off" php_value[error_reporting] = "~E_ALL" php_value[display_errors] = "Off" php_value[display_startup_errors] = "Off" php_value[html_errors] = "Off" ; General php_value[date.timezone] = "America/New_York" ; Piwigo php_value[max_execution_time] = "200" php_value[memory_limit] = "512M" php_value[post_max_size] = "100M" php_value[upload_max_filesize] = "100M" php_value[max_file_uploads] = "100" ; End ===== FastCGI ===== su - ee '/usr/local/etc/freenginx/default.d/media.conf' location '~' '\.(php|phar)(/.*)?$' { fastcgi_split_path_info '^(.+\.(?:php|phar))(/.*)$'; fastcgi_intercept_errors 'on'; fastcgi_index 'index.php'; include 'fastcgi_params'; fastcgi_param 'SCRIPT_FILENAME' '$document_root$fastcgi_script_name'; fastcgi_param 'PATH_INFO' '$fastcgi_path_info'; fastcgi_param 'HTTPS' 'on'; fastcgi_pass '127.0.0.1:9003'; } # End ===== Server Block ===== su - ee '/usr/local/etc/freenginx/vhosts.d/media.conf' && service 'nginx' reload server { listen '443' 'ssl'; http2 'on'; server_name 'media.realmofespionage.xyz'; root '/usr/local/www/media'; index 'index.php'; include '/usr/local/etc/freenginx/default.d/media.conf'; include '/usr/local/etc/freenginx/default.d/headers.conf'; client_max_body_size '100M'; # access_log '/var/log/nginx/media-access.log'; # error_log '/var/log/nginx/media-error.log'; location '/' { index 'index.php'; try_files '$uri $uri/' '@rewrite'; } location '@rewrite' { rewrite '^/picture((/|$).*)$' '/picture.php$1' 'last'; rewrite '^/index((/|$).*)$' '/index.php$1' 'last'; rewrite '^/i((/|$).*)$' '/i.php$1' 'last'; } } # End ====== Initial Setup ====== * https://media.realmofespionage.xyz ====== Settings ====== * :!: Use a relay/bogus email address during account creation to protect against potential spam ((the webmaster URL in the footer shows the email in plaintext and looks tasty to bots)) * :!: Disable ''Allow user registration'' **immediately** under Configuration -> Options -> General -> Permissions * :?: Seemingly have to enable ''Activate comments'' in order to prevent broken CSS on the bottom of image pages, but can uncheck ''Comments for all'' so that nobody public can leave comments * Activate Boostrap Darkroom theme ===== Page Banner ===== ****

Tech, hardware, food, nature, and gaming pictures and videos!

===== config.inc.php ===== * [[https://piwigo.org/forum/viewtopic.php?pid=159584#p159584|nginx Rewrite source]] * [[https://doc.piwigo.org/import-and-manage-photos/file-formats-compatible-piwigo#block-5cef6409208a4b3ead19b930f85942b2|Video Uploading source]] * [[https://github.com/Piwigo/Piwigo/blob/master/include/config_default.inc.php|More Settings]] su - su -m 'www' -c "ee '/usr/local/www/media/local/config/config.inc.php'" 'Realm of Espionage', 'https://wiki.realmofespionage.xyz/start' => 'RoE | Wiki', 'https://blog.realmofespionage.xyz' => 'RoE | Blog', 'https://social.realmofespionage.xyz/profile/espionage724' => 'RoE | Social', 'https://forums.realmofespionage.xyz' => 'RoE | Forums', 'https://wiki.realmofespionage.xyz/user:espionage724' => 'Webmaster Info', 'https://wiki.realmofespionage.xyz/servers:bsd:nginx:piwigo' => 'Instance Configuration Notes', ); // Video Uploading $conf['upload_form_all_types'] = true; $conf['file_ext'] = array_merge( $conf['picture_ext'], array('mp4','webmv','m4v','webm','mov') ); // End ?> ====== Scripts ====== ===== Updater ===== mkdir -p ~/'.local/scripts/www/media' && ee ~/'.local/scripts/www/media/updater.sh' && chmod +x ~/'.local/scripts/www/media/updater.sh' #!/bin/sh cd '/tmp' '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' reset --hard 'origin/master'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' pull 'origin' 'master' --rebase" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' reset --hard 'origin/master'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' pull 'origin' 'master' --rebase" '/bin/sync' # End su 'root' -c ~/'.local/scripts/www/media/updater.sh' ===== Backup ===== mkdir -p ~/'backups' ~/'.local/scripts/www/media' && ee ~/'.local/scripts/www/media/backup.sh' && chmod +x ~/'.local/scripts/www/media/backup.sh' #!/bin/sh cd '/tmp' '/usr/bin/tar' -czf '/home/espionage724/backups/piwigo-files-auto-'$(date +%Y-%m-%d)'.tar.gz' -C '/usr/local/www' 'media' '/usr/local/bin/mariadb-dump' --single-transaction --quick 'piwigo' -r '/home/espionage724/backups/piwigo-database-auto-'$(date +%Y-%m-%d)'.sql' '/bin/sync' # End su 'root' -c ~/'.local/scripts/www/media/backup.sh' ===== Maintenance ===== mkdir -p ~/'.local/scripts/www/media' && ee ~/'.local/scripts/www/media/maintenance.sh' && chmod +x ~/'.local/scripts/www/media/maintenance.sh' #!/bin/sh cd '/tmp' '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' gc --aggressive --prune='all'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' fsck --full --strict" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' gc --aggressive --prune='all'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' fsck --full --strict" # End su 'root' -c ~/'.local/scripts/www/media/maintenance.sh' ===== Git Fix ===== * :!: Set email for **both** ''user.email'' mkdir -p ~/'.local/scripts/www/media' && ee ~/'.local/scripts/www/media/git-fix.sh' && chmod +x ~/'.local/scripts/www/media/git-fix.sh' #!/bin/sh cd '/tmp' #################### # Piwigo #################### '/usr/bin/su' -m 'www' -c "'/bin/rm' -Rf '/usr/local/www/media/.git'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' init --initial-branch='master'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' add '.'" ######################################## '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' config 'user.email' 'espionage724@x'" ######################################## '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' commit --message='x'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' remote add 'origin' 'https://github.com/Piwigo/Piwigo.git'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' pull --depth '1' --recurse-submodules 'origin' 'master' --rebase" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' reset --hard 'origin/master'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' gc --aggressive --prune='all'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' fsck --full --strict" #################### # Bootstrap Darkroom #################### '/usr/bin/su' -m 'www' -c "'/bin/rm' -Rf '/usr/local/www/media/themes/bootstrap_darkroom/.git'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' init --initial-branch='master'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' add '.'" ######################################## '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' config 'user.email' 'espionage724@x'" ######################################## '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' commit --message='x'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' remote add 'origin' 'https://github.com/Piwigo/piwigo-bootstrap-darkroom.git'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' pull --depth '1' --recurse-submodules 'origin' 'master' --rebase" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' reset --hard 'origin/master'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' gc --aggressive --prune='all'" '/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' fsck --full --strict" '/bin/sync' # End su 'root' -c ~/'.local/scripts/www/media/git-fix.sh' ====== cron ====== ===== Updater ===== * Daily ''01:00:00 AM'' su - ee '/etc/cron.d/media-updater' # SHELL=/bin/sh 0 1 * * * root '/home/espionage724/.local/scripts/www/media/updater.sh' # End ===== Backup ===== * Monthly (2nd) ''01:10:00 AM'' su - ee '/etc/cron.d/media-backup' # SHELL=/bin/sh 10 1 2 * * root '/home/espionage724/.local/scripts/www/media/backup.sh' # End ===== Maintenance ===== * Monthly (2nd) ''01:30:00 AM'' su - ee '/etc/cron.d/media-maintenance' # SHELL=/bin/sh 30 1 2 * * root '/home/espionage724/.local/scripts/www/media/maintenance.sh' # End ====== Backup ====== ===== Folder ===== su - tar -czf '/home/espionage724/piwigo-files-manual-'$(date +%Y-%m-%d)'.tar.gz' -C '/usr/local/www' 'media' ===== Database ===== su - mariadb-dump --single-transaction --quick 'piwigo' -r '/home/espionage724/piwigo-database-manual-'$(date +%Y-%m-%d)'.sql' ===== scp ===== **** scp espionage724@192.168.1.152:~/'piwigo-files-'*'.tar.gz' espionage724@192.168.1.152:~/'piwigo-database-'*'.sql' ~/'Downloads' && sync ====== Restore ====== ===== scp ===== **** scp ~/'Downloads/piwigo-files-'*'.tar.gz' ~/'Downloads/piwigo'*'.sql' espionage724@192.168.1.152:~ ===== Folder ===== su ls '/home/'$USER'/piwigo-files-'*'.tar.gz' && rm -Rf '/usr/local/www/media' tar -xzf '/home/'$USER'/piwigo-files-'*'.tar.gz' -C '/usr/local/www' 'media' && chown -R 'www':'www' '/usr/local/www/media' && sync ===== Database ===== * [[#database|Initial set-up]] su mariadb --execute='CREATE DATABASE piwigo;' cat '/home/'$USER/'piwigo'*'.sql' | mariadb 'piwigo' ===== MySQL Connection ===== su - su -m 'www' -c "ee '/usr/local/www/media/local/config/database.inc.php'" && clear $conf['db_host'] = '127.0.0.1';