This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| computing:pix3lfed [2026/03/02 03:23] – oemb1905 | computing:pix3lfed [2026/08/05 17:30] (current) – oemb1905 | ||
|---|---|---|---|
| Line 205: | Line 205: | ||
| First, let's create the unit file over in '' | First, let's create the unit file over in '' | ||
| - | | + | < |
| - | Description=Pixelfed Horizon Queue Worker | + | [Unit] |
| - | After=network.target apache2.service php8.4-fpm.service redis-server.service mariadb.service | + | Description=Pixelfed Horizon Queue Worker |
| - | Wants=apache2.service php8.4-fpm.service redis-server.service mariadb.service | + | Documentation=https:// |
| - | [Service] | + | After=network.target apache2.service php8.4-fpm.service redis-server.service mariadb.service |
| - | Type=simple | + | Wants=apache2.service php8.4-fpm.service redis-server.service mariadb.service |
| - | User=www-data | + | |
| - | Group=www-data | + | [Service] |
| - | WorkingDirectory=/ | + | Type=simple |
| - | ExecStart=/ | + | User=www-data |
| - | Restart=on-failure | + | Group=www-data |
| - | RestartSec=5s | + | WorkingDirectory=/ |
| - | StandardOutput=journal | + | ExecStart=/ |
| - | StandardError=journal | + | Restart=always |
| - | NoNewPrivileges=yes | + | RestartSec=3 |
| - | PrivateTmp=true | + | StartLimitIntervalSec=0 |
| - | ProtectSystem=strict | + | StandardOutput=journal |
| - | ProtectHome=yes | + | StandardError=journal |
| - | ReadWritePaths=/ | + | |
| - | ReadWritePaths=/ | + | # Security hardening (less restrictive than before) |
| - | [Install] | + | NoNewPrivileges=yes |
| - | WantedBy=multi-user.target | + | PrivateTmp=true |
| + | ProtectSystem=full | ||
| + | ProtectHome=yes | ||
| + | ProtectKernelTunables=yes | ||
| + | ProtectKernelModules=yes | ||
| + | ProtectControlGroups=yes | ||
| + | RestrictSUIDSGID=yes | ||
| + | LockPersonality=yes | ||
| + | RestrictRealtime=yes | ||
| + | |||
| + | # Paths Horizon actually needs to write to | ||
| + | ReadWritePaths=/ | ||
| + | ReadWritePaths=/ | ||
| + | ReadWritePaths=/ | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | </ | ||
| After you create the unit file, let's reload the daemon, restart the service and check for any errors. Restart all services and check a web browser to see if the instance resolves after restarting the services. | After you create the unit file, let's reload the daemon, restart the service and check for any errors. Restart all services and check a web browser to see if the instance resolves after restarting the services. | ||
| Line 238: | Line 255: | ||
| sudo systemctl reload apache2 | sudo systemctl reload apache2 | ||
| sudo systemctl restart apache2 php8.4-fpm pixelfed.service redis-server | sudo systemctl restart apache2 php8.4-fpm pixelfed.service redis-server | ||
| + | | ||
| + | Lastly, let's create our artisan workers so changes and updates happen automatically. Open up cron for www-data user with '' | ||
| + | |||
| + | < | ||
| + | * * * * * cd / | ||
| + | * * * * * cd / | ||
| + | * * * * * cd / | ||
| + | </ | ||
| At this point, most essential lifts are done. As long as your landing page resolves, which it should by this stage, you can now move on to creating an admin user and then managing the instance via the GUI web panel: | At this point, most essential lifts are done. As long as your landing page resolves, which it should by this stage, you can now move on to creating an admin user and then managing the instance via the GUI web panel: | ||
| Line 328: | Line 353: | ||
| sudo / | sudo / | ||
| | | ||
| - | Once I did this, the '' | + | Once I did this, the '' |
| + | |||
| + | https:// | ||
| + | https:// | ||
| + | |||
| + | More coming ... | ||
| - | --- // | + | --- // |