Merge pull request #49 from foozmeat/pr-alternatives
moved things into alternatives.md
This commit is contained in:
commit
6ba0627dac
|
@ -24,6 +24,7 @@ Index
|
|||
- [Alternative: Development with Vagrant](Running-Mastodon/Vagrant-guide.md)
|
||||
- [Administration guide](Running-Mastodon/Administration-guide.md)
|
||||
- [Tuning Mastodon](Running-Mastodon/Tuning.md)
|
||||
- [System Configuration Alternatives](Running-Mastodon/Alternatives.md)
|
||||
|
||||
### Contributing to Mastodon
|
||||
- [Sponsors](Contributing-to-Mastodon/Sponsors.md)
|
||||
|
|
|
@ -0,0 +1,218 @@
|
|||
Alternative Server Components
|
||||
=============================
|
||||
|
||||
This file provides some configurations for systems that will not be using
|
||||
the "stock" server components.
|
||||
|
||||
## Supervisord
|
||||
|
||||
An alternative to using systemd for controlling your mastodon processes is
|
||||
[Supervisord](http://supervisord.org/). The following file can be placed in
|
||||
`/etc/supervisor/conf.d/mastodon.conf`.
|
||||
|
||||
```
|
||||
[group:mastodon]
|
||||
programs=web,sidekiq,streaming
|
||||
|
||||
[program:web]
|
||||
command=/home/mastodon/live/ruby_wrapper bundle exec puma -C config/puma.rb
|
||||
user=mastodon
|
||||
directory=/home/mastodon/live
|
||||
stdout_logfile=/home/mastodon/live/log/puma.log
|
||||
stdout_logfile_maxbytes=1MB
|
||||
stdout_logfile_backups=10
|
||||
redirect_stderr=true
|
||||
environment=PORT=3000
|
||||
stopasgroup=true
|
||||
|
||||
[program:sidekiq]
|
||||
command=/home/mastodon/live/ruby_wrapper bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push
|
||||
user=mastodon
|
||||
directory=/home/mastodon/live
|
||||
stdout_logfile=/home/mastodon/live/log/sidekiq.log
|
||||
stdout_logfile_maxbytes=1MB
|
||||
stdout_logfile_backups=10
|
||||
redirect_stderr=true
|
||||
environment=DB_POOL=5
|
||||
stopasgroup=true
|
||||
|
||||
[program:streaming]
|
||||
command=/home/mastodon/live/ruby_wrapper /usr/bin/npm run start
|
||||
user=mastodon
|
||||
directory=/home/mastodon/live
|
||||
stdout_logfile=/home/mastodon/live/log/streaming.log
|
||||
stdout_logfile_maxbytes=1MB
|
||||
stdout_logfile_backups=10
|
||||
redirect_stderr=true
|
||||
environment=PORT=4000
|
||||
stopasgroup=true
|
||||
```
|
||||
|
||||
This configuration makes use of a wrapper script to ensure the correct
|
||||
environment.
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
cd /home/mastodon/live
|
||||
export RBENV_ROOT=/home/mastodon/.rbenv
|
||||
export PATH=/home/mastodon/.rbenv/bin:/home/mastodon/.rbenv/shims:$PATH
|
||||
export $(cat ".env.production" | xargs)
|
||||
|
||||
$@
|
||||
```
|
||||
|
||||
## Running with init scripts
|
||||
|
||||
Example init script for the web workers, to be placed in `/etc/init.d/mastodon-web`:
|
||||
|
||||
```
|
||||
#!/sbin/openrc-run
|
||||
|
||||
name="Mastodon Web Service"
|
||||
root="/home/mastodon/live"
|
||||
pidfile="${root}/web.pid"
|
||||
|
||||
depend() {
|
||||
use net
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting Mastodon web workers"
|
||||
|
||||
cd $root
|
||||
|
||||
start-stop-daemon --start \
|
||||
--chdir "${root}" \
|
||||
--user="mastodon" \
|
||||
--pidfile="${pidfile}" \
|
||||
--exec /usr/bin/env -- RAILS_ENV=production PORT=3000 bundle exec puma -C config/puma.rb -d --pidfile ${pidfile}
|
||||
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping Mastodon web workers"
|
||||
start-stop-daemon --stop \
|
||||
--pidfile=${pidfile} \
|
||||
eend $?
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Example init script for the background workers, to be placed in `/etc/init.d/mastodon-sidekiq`:
|
||||
|
||||
```
|
||||
|
||||
#!/sbin/openrc-run
|
||||
|
||||
name="Mastodon background workers Service"
|
||||
root="/home/mastodon/live"
|
||||
pidfile="${root}/worker.pid"
|
||||
logfile="${root}/sidekiq.conf"
|
||||
|
||||
depend() {
|
||||
use net
|
||||
need redis
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting Mastodon background workers"
|
||||
|
||||
cd $root
|
||||
|
||||
start-stop-daemon --start \
|
||||
--chdir "${root}" \
|
||||
--user="mastodon" \
|
||||
--pidfile="${pidfile}" \
|
||||
--exec /usr/bin/env -- RAILS_ENV=production DB_POOL=5 bundle exec sidekiq -d -P ${pidfile} -L ${logfile} -c 5 -q default -q mailers -q pull -q push
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping Mastodon background workers"
|
||||
start-stop-daemon --stop \
|
||||
--pidfile=${pidfile} \
|
||||
eend $?
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Example init script file for the streaming API, to be placed in `/etc/init.d/mastodon-streaming`:
|
||||
|
||||
```
|
||||
#!/sbin/openrc-run
|
||||
|
||||
name="Mastodon streaming API service"
|
||||
root="/home/mastodon/live"
|
||||
|
||||
depend() {
|
||||
use net
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting Mastodon streaming API"
|
||||
|
||||
cd $root
|
||||
|
||||
start-stop-daemon --start \
|
||||
--background --quiet \
|
||||
--chdir "${root}" \
|
||||
--user="mastodon" \
|
||||
--make-pidfile --pidfile=${root}/streaming.pid \
|
||||
--exec /usr/bin/env -- NODE_ENV=production PORT=4000 /usr/bin/npm run start
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping Mastodon streaming API"
|
||||
start-stop-daemon --stop \
|
||||
--pidfile=${root}/streaming.pid \
|
||||
eend $?
|
||||
}
|
||||
```
|
||||
|
||||
This allows you to `rc-update add mastodon-web && rc-update add mastodon-sidekiq && rc-update add mastodon-streaming` and `service mastodon-web start && service mastodon-sidekiq start && service mastodon-streaming start` to get things going.
|
||||
|
||||
## Apache
|
||||
|
||||
Setting up Mastodon behind Apache is possible as well, although you will need to enable [mod_proxy_wstunnel](https://httpd.apache.org/docs/trunk/mod/mod_proxy_wstunnel.html) beforehand. The configuration is then pretty straightforward.
|
||||
|
||||
```
|
||||
<VirtualHost *:80>
|
||||
ServerAdmin contact@example.com
|
||||
ServerName example.com
|
||||
Redirect Permanent / https://example.com/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerAdmin contact@example.com
|
||||
ServerName example.com
|
||||
|
||||
DocumentRoot /home/mastodon/live/public/
|
||||
|
||||
Header add Strict-Transport-Security "max-age=31536000"
|
||||
SSLEngine on
|
||||
SSLProtocol -all +TLSv1.2
|
||||
SSLHonorCipherOrder on
|
||||
SSLCipherSuite EECDH+AESGCM:AES256+EECDH:AES128+EECDH
|
||||
|
||||
SSLCertificateFile example.pem
|
||||
SSLCertificateKeyFile example.key
|
||||
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
ProxyPass /500.html !
|
||||
ProxyPass /oops.png !
|
||||
ProxyPass /api/v1/streaming/ ws://localhost:4000/
|
||||
ProxyPassReverse /api/v1/streaming/ ws://localhost:4000/
|
||||
ProxyPass / http://localhost:3000/
|
||||
ProxyPassReverse / http://localhost:3000/
|
||||
|
||||
ErrorDocument 500 /500.html
|
||||
ErrorDocument 501 /500.html
|
||||
ErrorDocument 502 /500.html
|
||||
ErrorDocument 503 /500.html
|
||||
ErrorDocument 504 /500.html
|
||||
</VirtualHost>
|
||||
```
|
|
@ -1,114 +0,0 @@
|
|||
Miscellaneous
|
||||
=============
|
||||
|
||||
## Running with init scripts
|
||||
|
||||
Example init script for the web workers, to be placed in `/etc/init.d/mastodon-web`:
|
||||
|
||||
```
|
||||
#!/sbin/openrc-run
|
||||
|
||||
name="Mastodon Web Service"
|
||||
root="/home/mastodon/live"
|
||||
pidfile="${root}/web.pid"
|
||||
|
||||
depend() {
|
||||
use net
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting Mastodon web workers"
|
||||
|
||||
cd $root
|
||||
|
||||
start-stop-daemon --start \
|
||||
--chdir "${root}" \
|
||||
--user="mastodon" \
|
||||
--pidfile="${pidfile}" \
|
||||
--exec /usr/bin/env -- RAILS_ENV=production PORT=3000 bundle exec puma -C config/puma.rb -d --pidfile ${pidfile}
|
||||
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping Mastodon web workers"
|
||||
start-stop-daemon --stop \
|
||||
--pidfile=${pidfile} \
|
||||
eend $?
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Example init script for the background workers, to be placed in `/etc/init.d/mastodon-sidekiq`:
|
||||
|
||||
```
|
||||
|
||||
#!/sbin/openrc-run
|
||||
|
||||
name="Mastodon background workers Service"
|
||||
root="/home/mastodon/live"
|
||||
pidfile="${root}/worker.pid"
|
||||
logfile="${root}/sidekiq.conf"
|
||||
|
||||
depend() {
|
||||
use net
|
||||
need redis
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting Mastodon background workers"
|
||||
|
||||
cd $root
|
||||
|
||||
start-stop-daemon --start \
|
||||
--chdir "${root}" \
|
||||
--user="mastodon" \
|
||||
--pidfile="${pidfile}" \
|
||||
--exec /usr/bin/env -- RAILS_ENV=production DB_POOL=5 bundle exec sidekiq -d -P ${pidfile} -L ${logfile} -c 5 -q default -q mailers -q pull -q push
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping Mastodon background workers"
|
||||
start-stop-daemon --stop \
|
||||
--pidfile=${pidfile} \
|
||||
eend $?
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Example init script file for the streaming API, to be placed in `/etc/init.d/mastodon-streaming`:
|
||||
|
||||
```
|
||||
#!/sbin/openrc-run
|
||||
|
||||
name="Mastodon streaming API service"
|
||||
root="/home/mastodon/live"
|
||||
|
||||
depend() {
|
||||
use net
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting Mastodon streaming API"
|
||||
|
||||
cd $root
|
||||
|
||||
start-stop-daemon --start \
|
||||
--background --quiet \
|
||||
--chdir "${root}" \
|
||||
--user="mastodon" \
|
||||
--make-pidfile --pidfile=${root}/streaming.pid \
|
||||
--exec /usr/bin/env -- NODE_ENV=production PORT=4000 /usr/bin/npm run start
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping Mastodon streaming API"
|
||||
start-stop-daemon --stop \
|
||||
--pidfile=${root}/streaming.pid \
|
||||
eend $?
|
||||
}
|
||||
```
|
||||
|
||||
This allows you to `rc-update add mastodon-web && rc-update add mastodon-sidekiq && rc-update add mastodon-streaming` and `service mastodon-web start && service mastodon-sidekiq start && service mastodon-streaming start` to get things going.
|
|
@ -101,49 +101,6 @@ server {
|
|||
}
|
||||
```
|
||||
|
||||
## Apache
|
||||
|
||||
Setting up Mastodon behind Apache is possible as well, although you will need to enable [mod_proxy_wstunnel](https://httpd.apache.org/docs/trunk/mod/mod_proxy_wstunnel.html) beforehand. The configuration is then pretty straightforward.
|
||||
|
||||
```
|
||||
<VirtualHost *:80>
|
||||
ServerAdmin contact@example.com
|
||||
ServerName example.com
|
||||
Redirect Permanent / https://example.com/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerAdmin contact@example.com
|
||||
ServerName example.com
|
||||
|
||||
DocumentRoot /home/mastodon/live/public/
|
||||
|
||||
Header add Strict-Transport-Security "max-age=31536000"
|
||||
SSLEngine on
|
||||
SSLProtocol -all +TLSv1.2
|
||||
SSLHonorCipherOrder on
|
||||
SSLCipherSuite EECDH+AESGCM:AES256+EECDH:AES128+EECDH
|
||||
|
||||
SSLCertificateFile example.pem
|
||||
SSLCertificateKeyFile example.key
|
||||
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
ProxyPass /500.html !
|
||||
ProxyPass /oops.png !
|
||||
ProxyPass /api/v1/streaming/ ws://localhost:4000/
|
||||
ProxyPassReverse /api/v1/streaming/ ws://localhost:4000/
|
||||
ProxyPass / http://localhost:3000/
|
||||
ProxyPassReverse / http://localhost:3000/
|
||||
|
||||
ErrorDocument 500 /500.html
|
||||
ErrorDocument 501 /500.html
|
||||
ErrorDocument 502 /500.html
|
||||
ErrorDocument 503 /500.html
|
||||
ErrorDocument 504 /500.html
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
## Running in production without Docker
|
||||
|
||||
It is recommended to create a special user for mastodon on the server (you could call the user `mastodon`), though remember to disable outside login for it. You should only be able to get into that user through `sudo su - mastodon`.
|
||||
|
|
Loading…
Reference in New Issue