[media]
; User/Group
user = "www-data"
group = "www-data"
; Socket
listen = "/run/php/media.sock"
listen.owner = "www-data"
listen.group = "www-data"
listen.mode = "0662"
; Process Management
pm = "ondemand"
pm.max_children = "4"
pm.process_idle_timeout = "30"
; Logging
php_value[log_errors] = "0"
php_value[error_reporting] = "~E_ALL"
; 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] = "20M"
php_value[max_file_uploads] = "100"
; End
===== FastCGI =====
sudo -e '/etc/nginx/snippets/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 'unix:/run/php/media.sock';
}
# End
===== Server Block =====
sudo -e '/etc/nginx/sites-available/media.conf'
server {
listen '443' 'ssl';
http2 'on';
server_name 'media.realmofespionage.xyz';
root '/var/www/media';
index 'index.php';
include '/etc/nginx/snippets/media.conf';
include '/etc/nginx/snippets/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
sudo ln -s -f '/etc/nginx/sites-available/media.conf' '/etc/nginx/sites-enabled/media.conf' && sudo systemctl reload 'nginx'
====== 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]]
sudo -u 'www-data' -e '/var/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:linux: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 ======
===== Git Fix =====
* :!: Set email for **both** ''user.email''
sudo mkdir -p '/etc/nginx/scripts/media' && sudo -e '/etc/nginx/scripts/media/git-fix.sh' && sudo chmod '0500' '/etc/nginx/scripts/media/git-fix.sh' && sudo chown 'www-data':'www-data' '/etc/nginx/scripts/media/git-fix.sh'
#!/bin/bash
cd '/tmp'
'/usr/bin/rm' -Rf '/var/www/media/.git'
'/usr/bin/git' -C '/var/www/media' init --initial-branch='master'
'/usr/bin/git' -C '/var/www/media' add '.'
########################################
'/usr/bin/git' -C '/var/www/media' config 'user.email' 'espionage724@x'
########################################
'/usr/bin/git' -C '/var/www/media' commit --message='x'
'/usr/bin/git' -C '/var/www/media' remote add 'origin' 'https://github.com/Piwigo/Piwigo.git'
'/usr/bin/git' -C '/var/www/media' pull --depth '1' --recurse-submodules 'origin' 'master' --rebase
'/usr/bin/git' -C '/var/www/media' reset --hard 'origin/master'
'/usr/bin/git' -C '/var/www/media' gc --aggressive --prune='all'
'/usr/bin/git' -C '/var/www/media' fsck --full --strict
'/usr/bin/rm' -Rf '/var/www/media/themes/bootstrap_darkroom/.git'
'/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' init --initial-branch='master'
'/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' add '.'
########################################
'/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' config 'user.email' 'espionage724@x'
########################################
'/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' commit --message='x'
'/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' remote add 'origin' 'https://github.com/Piwigo/piwigo-bootstrap-darkroom.git'
'/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' pull --depth '1' --recurse-submodules 'origin' 'master' --rebase
'/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' reset --hard 'origin/master'
'/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' gc --aggressive --prune='all'
'/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' fsck --full --strict
# End
sudo -u 'www-data' '/etc/nginx/scripts/media/git-fix.sh'
====== Services ======
===== Updater =====
==== Service ====
sudo -e '/etc/systemd/system/media-up.service'
[Service]
User=www-data
Group=www-data
Type=oneshot
WorkingDirectory=/var/www/media
ExecStart='/usr/bin/git' -C '/var/www/media' reset --hard 'origin/master'
ExecStart='/usr/bin/git' -C '/var/www/media' pull origin 'master' --rebase
ExecStart='/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' reset --hard 'origin/master'
ExecStart='/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' pull origin 'master' --rebase
ExecStartPost='/usr/bin/sync'
# End
==== Timer ====
* Daily ''01:00:00 AM''
sudo -e '/etc/systemd/system/media-up.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'media-up.timer' --now && sudo systemctl start 'media-up' && sudo systemctl status 'media-up' -l
[Unit]
Description=Piwigo Git Updater
After=network-online.target
Wants=network-online.target
[Timer]
OnCalendar=*-*-* 01:00:00
Persistent=true
[Install]
WantedBy=timers.target
# End
===== Backup =====
==== Files ====
=== Service ===
mkdir -p ~/'backups' && sudo -e '/etc/systemd/system/media-fb.service' && sudo sed -i 's/CHANGEME/'$USER'/g' '/etc/systemd/system/media-fb.service'
[Service]
Type=oneshot
WorkingDirectory=/var/www/media
ExecStart='/usr/bin/bash' -c '"/usr/bin/tar" -czf "/home/CHANGEME/backups/piwigo-files-auto-"$$(date +%%Y-%%m-%%d)".tar.gz" -C "/var/www" "media"'
ExecStartPost='/usr/bin/sync'
# End
=== Timer ===
* Monthly (2nd) ''01:15:00 AM''
sudo -e '/etc/systemd/system/media-fb.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'media-fb.timer' --now
[Unit]
Description=Piwigo Files Backup
[Timer]
OnCalendar=*-*-02 01:15:00
Persistent=true
[Install]
WantedBy=timers.target
# End
sudo systemctl start 'media-fb' && sudo systemctl status 'media-fb' -l
==== Database ====
=== Database Auth ===
sudo mkdir -p '/var/lib/mysql/auth' && sudo -e '/var/lib/mysql/auth/piwigo' && sudo chown 'mysql':'mysql' '/var/lib/mysql/auth/piwigo' && sudo chmod '0600' '/var/lib/mysql/auth/piwigo'
[mariadb-dump]
user=piwigo
password=x
# End
=== Service ===
mkdir -p ~/'backups' && sudo mkdir -p '/var/lib/mysql/tmp' && sudo -e '/etc/systemd/system/media-db.service' && sudo sed -i 's/'CHANGEME'/'$USER'/g' '/etc/systemd/system/media-db.service'
[Service]
Group=mysql
Type=oneshot
WorkingDirectory=/var/lib/mysql
ExecStart='/usr/bin/bash' -c '"/usr/bin/mariadb-dump" --defaults-extra-file="/var/lib/mysql/auth/piwigo" --single-transaction --quick "piwigo" -r "/home/CHANGEME/backups/piwigo-database-auto-"$$(date +%%Y-%%m-%%d)".sql"'
ExecStartPost='/usr/bin/sync'
# End
=== Timer ===
* Monthly (2nd) ''01:10:00 AM''
sudo -e '/etc/systemd/system/media-db.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'media-db.timer' --now && sudo systemctl start 'media-db' && sudo systemctl status 'media-db' -l
[Unit]
Description=Piwigo Database Backup
After=mariadb.service
[Timer]
OnCalendar=*-*-02 01:10:00
Persistent=true
[Install]
WantedBy=timers.target
# End
===== Maintenance =====
==== Service ====
sudo -e '/etc/systemd/system/media-m.service'
[Service]
User=www-data
Group=www-data
Type=oneshot
WorkingDirectory=/var/www/media
ExecStart='/usr/bin/git' -C '/var/www/media' gc --aggressive --prune='all'
ExecStart='/usr/bin/git' -C '/var/www/media' fsck --full --strict
ExecStart='/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' gc --aggressive --prune='all'
ExecStart='/usr/bin/git' -C '/var/www/media/themes/bootstrap_darkroom' fsck --full --strict
ExecStartPost='/usr/bin/sync'
# End
==== Timer ====
* Monthly (2nd) ''01:30:00 AM''
sudo -e '/etc/systemd/system/media-m.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'media-m.timer' --now
[Unit]
Description=Piwigo Maintenance
After=network-online.target
Wants=network-online.target
[Timer]
OnCalendar=*-*-02 01:30:00
Persistent=true
[Install]
WantedBy=timers.target
# End
sudo systemctl start 'media-m' && sudo systemctl status 'media-m' -l
====== Backup ======
===== Files =====
****
sudo tar -czf ~/'piwigo-files-manual-'$(date +%Y-%m-%d)'.tar.gz' -C '/var/www' 'media'
===== Database =====
****
sudo mariadb-dump --single-transaction --quick 'piwigo' -r ~/'piwigo-database-manual-'$(date +%Y-%m-%d)'.sql'
===== scp =====
scp espionage724@192.168.1.152:~/'piwigo-files-'*'.tar.gz' ~/'Downloads'
scp espionage724@192.168.1.152:~/'piwigo-database-'*'.sql' ~/'Downloads'
====== Restore ======
===== scp =====
scp ~/'Downloads/piwigo-files-'*'.tar.gz' espionage724@192.168.1.152:~
scp ~/'Downloads/piwigo'*'.sql' espionage724@192.168.1.152:~
===== Stop nginx =====
****
sudo systemctl stop 'nginx'
===== Remove Existing Files =====
****
ls ~/'piwigo-files-'*'.tar.gz' && sudo rm -Rf '/var/www/media'
===== Restore Files =====
****
sudo tar -xzf ~/'piwigo-files-'*'.tar.gz' -C '/var/www' 'media' && sudo chown -R 'www-data':'www-data' '/var/www/media' && sudo chmod -R '0755' '/var/www/media'
===== Restore Database =====
* [[#database|Initial set-up]]
sudo mariadb --execute='DROP DATABASE piwigo;'
sudo mariadb --execute='CREATE DATABASE piwigo;'
sudo mariadb 'piwigo' < ~/'piwigo'*'.sql'
===== Git Fix =====
* :!: Set email for ''user.email''
sudo su 'www-data' -s '/bin/bash'
rm -Rf '/var/www/media/.git'
git -C '/var/www/media' init --initial-branch='master'
git -C '/var/www/media' add '.'
git -C '/var/www/media' config 'user.email' 'espionage724@x'
git -C '/var/www/media' commit --message='x'
git -C '/var/www/media' remote add 'origin' 'https://github.com/Piwigo/Piwigo.git'
git -C '/var/www/media' pull --depth '1' --recurse-submodules 'origin' 'master' --rebase
git -C '/var/www/media' reset --hard 'origin/master'
git -C '/var/www/media' gc --aggressive --prune='all'
git -C '/var/www/media' fsck --full --strict
==== Bootstrap Darkroom ====
* :!: Set email for ''user.email''
rm -Rf '/var/www/media/themes/bootstrap_darkroom/.git'
git -C '/var/www/media/themes/bootstrap_darkroom' init --initial-branch='master'
git -C '/var/www/media/themes/bootstrap_darkroom' add '.'
git -C '/var/www/media/themes/bootstrap_darkroom' config 'user.email' 'espionage724@x'
git -C '/var/www/media/themes/bootstrap_darkroom' commit --message='x'
git -C '/var/www/media/themes/bootstrap_darkroom' remote add 'origin' 'https://github.com/Piwigo/piwigo-bootstrap-darkroom.git'
git -C '/var/www/media/themes/bootstrap_darkroom' pull --depth '1' --recurse-submodules 'origin' 'master' --rebase
git -C '/var/www/media/themes/bootstrap_darkroom' reset --hard 'origin/master'
git -C '/var/www/media/themes/bootstrap_darkroom' gc --aggressive --prune='all'
git -C '/var/www/media/themes/bootstrap_darkroom' fsck --full --strict
exit
===== MySQL Connection =====
* Windows uses ''127.0.0.1''
sudo -u 'www-data' -e '/var/www/media/local/config/database.inc.php'
$conf['db_host'] = 'localhost';
===== Start nginx =====
****
sudo systemctl start 'nginx'
===== Clean-up =====
****
rm -fv ~/'piwigo-files-'*'.tar.gz' ~/'piwigo'*'.sql'
====== TODOs ======
* Show title on pictures (long titles get cut-off in navbar)
* AI ([[https://piwigo.org/forum/viewtopic.php?pid=192438#p192438|post]], [[https://github.com/Piwigo/Piwigo/commits/master/include/config_default.inc.php|config.inc.php]])
* :?: Below is remaining packages not installed from old installs
sudo dnf install libvorbis poppler-utils
sudo zypper install php8-bz2 php8-zlib