servers:nginx:mastodon
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
servers:nginx:mastodon [2019/02/26 00:52] – external edit 127.0.0.1 | servers:nginx:mastodon [2024/08/13 22:18] (current) – removed Sean Rhone | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Information ====== | ||
- | * Mastodon ((https:// | ||
- | * [[Information: | ||
- | * https:// | ||
- | |||
- | ===== Prerequisites ===== | ||
- | |||
- | * [[distros: | ||
- | * [[servers: | ||
- | * [[servers: | ||
- | |||
- | ====== Repositories ====== | ||
- | |||
- | ===== Node.js ===== | ||
- | |||
- | wget -O '/ | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | ===== Yarn ===== | ||
- | |||
- | wget -O '/ | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | ====== Dependencies ====== | ||
- | |||
- | **** | ||
- | |||
- | sudo apt install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev redis-server redis-tools postgresql postgresql-contrib yarn libidn11-dev libicu-dev libjemalloc-dev | ||
- | |||
- | ====== Create User ====== | ||
- | |||
- | **** | ||
- | |||
- | sudo useradd --comment ' | ||
- | |||
- | ====== Download Source ====== | ||
- | |||
- | ===== Switch User ===== | ||
- | |||
- | **** | ||
- | |||
- | sudo su ' | ||
- | |||
- | ===== Download Source ===== | ||
- | |||
- | * Clones into ''/ | ||
- | |||
- | cd ~ && git clone --branch ' | ||
- | |||
- | ====== Additional Dependencies ====== | ||
- | |||
- | ===== Switch User ===== | ||
- | |||
- | **** | ||
- | |||
- | sudo su ' | ||
- | |||
- | ===== rbenv ===== | ||
- | |||
- | ==== Download Source ==== | ||
- | |||
- | **** | ||
- | |||
- | cd ~ && git clone --branch ' | ||
- | |||
- | ==== Compile ==== | ||
- | |||
- | **** | ||
- | |||
- | cd ~/' | ||
- | |||
- | ==== PATH ==== | ||
- | |||
- | **** | ||
- | |||
- | echo -e '\n# rbenv\nexport PATH=" | ||
- | |||
- | ===== Ruby ===== | ||
- | |||
- | ==== Download Source ==== | ||
- | |||
- | **** | ||
- | |||
- | cd ~ && git clone --branch ' | ||
- | |||
- | ==== Compile ==== | ||
- | |||
- | * Change '' | ||
- | |||
- | RUBY_CONFIGURE_OPTS=' | ||
- | |||
- | ===== Gem ===== | ||
- | |||
- | **** | ||
- | |||
- | gem update --system | ||
- | |||
- | ===== Bundler ===== | ||
- | |||
- | ==== Install ==== | ||
- | |||
- | * :!: Mastodon' | ||
- | |||
- | gem install bundler --no-document | ||
- | |||
- | ==== Dependencies ==== | ||
- | |||
- | **** | ||
- | |||
- | cd ~/' | ||
- | |||
- | ===== Yarn ===== | ||
- | |||
- | **** | ||
- | |||
- | cd ~/' | ||
- | |||
- | ===== Exit User ===== | ||
- | |||
- | **** | ||
- | |||
- | exit | ||
- | |||
- | ====== Database ====== | ||
- | |||
- | ===== Service ===== | ||
- | |||
- | **** | ||
- | |||
- | sudo systemctl enable ' | ||
- | |||
- | ===== Database ===== | ||
- | |||
- | sudo -u ' | ||
- | |||
- | CREATE USER mastodon CREATEDB; | ||
- | |||
- | \q | ||
- | |||
- | ====== Redis ====== | ||
- | |||
- | ===== Service ===== | ||
- | |||
- | * TODO: See if this is needed; Mastodon' | ||
- | |||
- | sudo systemctl enable ' | ||
- | |||
- | ====== nginx Configuration ====== | ||
- | |||
- | ===== Mastodon Proxies ===== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | location @proxy { | ||
- | proxy_set_header Host $host; | ||
- | proxy_set_header X-Real-IP $remote_addr; | ||
- | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
- | proxy_set_header X-Forwarded-Proto https; | ||
- | proxy_set_header Proxy ""; | ||
- | proxy_pass_header Server; | ||
- | |||
- | proxy_pass http:// | ||
- | proxy_buffering on; | ||
- | proxy_redirect off; | ||
- | proxy_http_version 1.1; | ||
- | proxy_set_header Upgrade $http_upgrade; | ||
- | proxy_set_header Connection $connection_upgrade; | ||
- | |||
- | proxy_cache CACHE; | ||
- | proxy_cache_valid 200 7d; | ||
- | proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; | ||
- | add_header X-Cached $upstream_cache_status; | ||
- | add_header Strict-Transport-Security " | ||
- | |||
- | tcp_nodelay on; | ||
- | } | ||
- | |||
- | location / | ||
- | proxy_set_header Host $host; | ||
- | proxy_set_header X-Real-IP $remote_addr; | ||
- | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
- | proxy_set_header X-Forwarded-Proto https; | ||
- | proxy_set_header Proxy ""; | ||
- | |||
- | proxy_pass http:// | ||
- | proxy_buffering off; | ||
- | proxy_redirect off; | ||
- | proxy_http_version 1.1; | ||
- | proxy_set_header Upgrade $http_upgrade; | ||
- | proxy_set_header Connection $connection_upgrade; | ||
- | |||
- | tcp_nodelay on; | ||
- | }</ | ||
- | |||
- | ===== Server Block ===== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | map $http_upgrade $connection_upgrade { | ||
- | default upgrade; | ||
- | '' | ||
- | } | ||
- | |||
- | proxy_cache_path / | ||
- | |||
- | server { | ||
- | listen ' | ||
- | server_name ' | ||
- | root '/ | ||
- | |||
- | include '/ | ||
- | include '/ | ||
- | |||
- | client_max_body_size ' | ||
- | |||
- | #access_log / | ||
- | #error_log / | ||
- | |||
- | location / { | ||
- | try_files $uri @proxy; | ||
- | } | ||
- | |||
- | location ~ ^/ | ||
- | try_files $uri @proxy; | ||
- | } | ||
- | |||
- | location /sw.js { | ||
- | try_files $uri @proxy; | ||
- | } | ||
- | |||
- | error_page 500 501 502 503 504 /500.html; | ||
- | }</ | ||
- | |||
- | ==== Enable Server Block ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo rm -f '/ | ||
- | |||
- | ====== Initial Setup ====== | ||
- | |||
- | ===== Switch User ===== | ||
- | |||
- | **** | ||
- | |||
- | sudo su ' | ||
- | |||
- | ===== Initial Setup ===== | ||
- | |||
- | **** | ||
- | |||
- | cd ~/' | ||
- | |||
- | ==== Settings ==== | ||
- | |||
- | * Domain name: '' | ||
- | * Yes single user mode | ||
- | * No Docker | ||
- | * Default PostgresSQL details | ||
- | * Default Redis details | ||
- | * No uploaded files on cloud | ||
- | * No emails from localhost | ||
- | |||
- | ====== Post Setup ====== | ||
- | |||
- | ===== Logo ===== | ||
- | |||
- | ==== Hero image ==== | ||
- | |||
- | * 600x100 | ||
- | * RoE | Social text centered in font '' | ||
- | * Gray background with HTML color notation ''# | ||
- | * White text for '' | ||
- | * Blue text for '' | ||
- | |||
- | ==== Instance thumbnail ==== | ||
- | |||
- | * 1200x630 | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * Gray background with HTML color notation ''# | ||
- | |||
- | ===== Documentation ===== | ||
- | |||
- | * https:// | ||
- | |||
- | ===== Rake Tasks ===== | ||
- | |||
- | * https:// | ||
- | |||
- | ====== Services ====== | ||
- | |||
- | ===== Web Workers ===== | ||
- | |||
- | * Background daemon ran at system startup | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=Mastodon Web Workers | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Service] | ||
- | Type=simple | ||
- | User=mastodon | ||
- | Group=mastodon | ||
- | WorkingDirectory=/ | ||
- | Environment=' | ||
- | Environment=' | ||
- | Environment=' | ||
- | ExecStart='/ | ||
- | ExecReload=/ | ||
- | TimeoutSec=15 | ||
- | Restart=always | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target</ | ||
- | |||
- | ===== Background Queue ===== | ||
- | |||
- | * :!: '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=Mastodon Background Queue | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Service] | ||
- | Type=simple | ||
- | User=mastodon | ||
- | Group=mastodon | ||
- | WorkingDirectory=/ | ||
- | Environment=' | ||
- | Environment=' | ||
- | Environment=' | ||
- | Environment=' | ||
- | ExecStart='/ | ||
- | TimeoutSec=15 | ||
- | Restart=always | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target</ | ||
- | |||
- | ===== Streaming API ===== | ||
- | |||
- | * Background daemon ran at system startup | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=Mastodon Streaming API | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Service] | ||
- | Type=simple | ||
- | User=mastodon | ||
- | Group=mastodon | ||
- | WorkingDirectory=/ | ||
- | Environment=' | ||
- | Environment=' | ||
- | Environment=' | ||
- | ExecStart='/ | ||
- | TimeoutSec=15 | ||
- | Restart=always | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target</ | ||
- | |||
- | ===== Updater ===== | ||
- | |||
- | ==== Service ==== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Service] | ||
- | User=mastodon | ||
- | Group=mastodon | ||
- | Type=oneshot | ||
- | WorkingDirectory=/ | ||
- | Environment=' | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | |||
- | |||
- | ==== Timer ==== | ||
- | |||
- | * Every day at '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=Mastodon Updater | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-* 02:00:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ===== Ruby Updater ===== | ||
- | |||
- | ==== Service ==== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Service] | ||
- | User=mastodon | ||
- | Group=mastodon | ||
- | Type=oneshot | ||
- | WorkingDirectory=/ | ||
- | Environment=' | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | ==== Timer ==== | ||
- | |||
- | * Every day at '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=Mastodon Ruby Updater | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-* 01:30:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ===== Maintenance ===== | ||
- | |||
- | ==== Service ==== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Service] | ||
- | User=mastodon | ||
- | Group=mastodon | ||
- | Type=oneshot | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | ==== Timer ==== | ||
- | |||
- | * '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=Mastodon Maintenance | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-01 02:20:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ===== Restarter ===== | ||
- | |||
- | ==== Service ==== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Service] | ||
- | Type=oneshot | ||
- | ExecStartPre='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | ExecStartPost='/ | ||
- | ExecStartPost='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | ==== Timer ==== | ||
- | |||
- | * Every day at '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=Mastodon Service Restarter | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-* 02:10:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ===== Backup ===== | ||
- | |||
- | ==== Information ==== | ||
- | |||
- | * :!: This differs from the usual backup scheme and **should not** be used copy/ | ||
- | * Because '' | ||
- | * So to avoid having to run another service just to move the database dump, it's integrated into the files backup service | ||
- | |||
- | ==== Database ==== | ||
- | |||
- | === Service === | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Service] | ||
- | Type=oneshot | ||
- | User=mastodon | ||
- | Group=mastodon | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | === Timer === | ||
- | |||
- | * Every day at '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=Mastodon Database Dump | ||
- | After=postgresql.service | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-* 02:45:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ==== Files ==== | ||
- | |||
- | === Service === | ||
- | |||
- | mkdir -p ~/' | ||
- | |||
- | < | ||
- | [Service] | ||
- | Type=oneshot | ||
- | WorkingDirectory=/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | === Timer === | ||
- | |||
- | * Every day at '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=Mastodon Files and Database Backup | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-* 02:50:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ====== Backup ====== | ||
- | |||
- | * Create backup archive on server and transfer to client computer | ||
- | |||
- | ===== Server ===== | ||
- | |||
- | ==== Stop Services ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo systemctl stop mastodon-web mastodon-sidekiq mastodon-streaming redis-server | ||
- | |||
- | ==== Backup Files ==== | ||
- | |||
- | **** | ||
- | |||
- | cd '/ | ||
- | |||
- | ==== Backup Database ==== | ||
- | |||
- | === Backup Database === | ||
- | |||
- | **** | ||
- | |||
- | sudo -u ' | ||
- | |||
- | ==== Start Services ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo systemctl start mastodon-web mastodon-sidekiq mastodon-streaming redis-server | ||
- | |||
- | ===== Client ===== | ||
- | |||
- | ==== Transfer Files To Client ==== | ||
- | |||
- | **** | ||
- | |||
- | scp espionage724@192.168.1.153: | ||
- | |||
- | ====== Restore ====== | ||
- | |||
- | * :!: This is untested as of 2019/01/18 | ||
- | |||
- | ===== Client ===== | ||
- | |||
- | ==== Transfer Files To Server ==== | ||
- | |||
- | **** | ||
- | |||
- | scp ~/' | ||
- | |||
- | ==== Remove Files ==== | ||
- | |||
- | **** | ||
- | |||
- | rm -f ~/' | ||
- | |||
- | ===== Server ===== | ||
- | |||
- | ==== Stop Services ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo systemctl stop mastodon-web mastodon-sidekiq mastodon-streaming redis-server | ||
- | |||
- | ==== Restore Files ==== | ||
- | |||
- | === Extract === | ||
- | |||
- | **** | ||
- | |||
- | mkdir -p '/ | ||
- | |||
- | === Move === | ||
- | |||
- | == system Folder == | ||
- | |||
- | **** | ||
- | |||
- | sudo rm -Rf '/ | ||
- | |||
- | == Settings == | ||
- | |||
- | **** | ||
- | |||
- | sudo rm -f '/ | ||
- | |||
- | == Redis Database == | ||
- | |||
- | **** | ||
- | |||
- | sudo rm -f '/ | ||
- | |||
- | ==== Restore Database ==== | ||
- | |||
- | === Create Database === | ||
- | |||
- | **** | ||
- | |||
- | sudo -u ' | ||
- | |||
- | === Restore === | ||
- | |||
- | **** | ||
- | |||
- | sudo -u ' | ||
- | |||
- | ==== Start Services ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo systemctl start mastodon-web mastodon-sidekiq mastodon-streaming redis-server | ||
- | |||
- | ==== Remove Backups ==== | ||
- | |||
- | * Verify that Mastodon works before running | ||
- | |||
- | rm ~/' |
/srv/www/wiki/data/attic/servers/nginx/mastodon.1551160350.txt.gz · Last modified: (external edit)