98 lines
3.0 KiB
Markdown
98 lines
3.0 KiB
Markdown
# Single-container Mastodon
|
|
|
|
Don't ever host things anywhere but on a domain that you own.
|
|
|
|
This violates all the docker best practices and puts the whole-ass app
|
|
inside a single container (including redis and postgres!) so that you can
|
|
easily bring up a self-hosted mastodon on things like caprover self-hosted
|
|
PaaS in a single "app" without having to worry about multiple containers or
|
|
configuring cross-container links.
|
|
|
|
This is scratching an itch: I really just wanted a one-command single-user
|
|
Mastodon instance that stores all of its state in a single directory I can
|
|
tar and scp.
|
|
|
|
# Features
|
|
|
|
* Ubuntu bionic
|
|
* Everything in one container, including minimal postfix, postgres,
|
|
and redis
|
|
* assets are precompiled on server startup
|
|
* all state is in one volume/dir
|
|
* database migrations can be run at startup
|
|
|
|
# Build Variables
|
|
|
|
* `UID` - numeric userid for `mastodon` user that everything runs as
|
|
(default: `991`)
|
|
* `GID` - numeric groupid for `mastodon` user that everything runs as
|
|
(default: `991`)
|
|
* `REPO_URL`: url to repository to use (default:
|
|
`https://github.com/tootsuite/mastodon.git`)
|
|
* `REPO_REV`: git revision to use (default:
|
|
`c4118ba71ba31e408c02d289e111326ccc6f6aa2`, mastodon v3.0.1)
|
|
|
|
# Environment Variables
|
|
|
|
* `RUN_DB_MIGRATIONS` (default: `true`, set to empty string `""` to disable)
|
|
* `SIDEKIQ_WORKERS`: (default: `5`)
|
|
* others: https://github.com/tootsuite/mastodon/blob/master/.env.production.sample
|
|
|
|
# Volumes
|
|
|
|
* `/state` - everything lives in here, db, redis, static files, logs,
|
|
everything
|
|
|
|
Note that `/state/envdir` is an environment-variable-defining directory that
|
|
is used for all service invocations, so you can set environment settings
|
|
here for all processes without restarting the docker container.
|
|
|
|
# Ports
|
|
|
|
* `3000`: mastodon web (no tls, do that elsewhere)
|
|
* `4000`: mastodon streaming
|
|
|
|
# Credits
|
|
|
|
All praise to wonderfall's earlier single-container mastodon:
|
|
|
|
* https://github.com/Wonderfall/docker-mastodon
|
|
* https://hub.docker.com/r/wonderfall/mastodon
|
|
|
|
(I only made this because it did not include postfix/postgres/redis.)
|
|
|
|
# Author
|
|
|
|
Jeffrey Paul <sneak@sneak.berlin>
|
|
|
|
# Example captain-definition
|
|
|
|
For use with Caprover.
|
|
|
|
(Note that the Netdata system monitor program that
|
|
ships with Capdata is **spyware**, and Capdata [refuses to address that they
|
|
are embedding spyware](https://github.com/caprover/caprover/issues/553), so
|
|
it is advisable that you do not enable the Netdata support when using
|
|
Caprover unless you enjoy your usage data being silently transmitted to
|
|
Google.)
|
|
|
|
```
|
|
{
|
|
"schemaVersion": 2,
|
|
"imageName": "sneak/mastodon:v3.0.1"
|
|
}
|
|
```
|
|
|
|
# After First Run
|
|
|
|
```
|
|
# docker exec -ti <container name> /bin/bash
|
|
root@c81a376bf546:~/app# su - mastodon
|
|
mastodon@c81a376bf546:~$ cd app
|
|
mastodon@c81a376bf546:~/app$ RAILS_ENV=production envdir /state/envdir bin/tootctl accounts create <newusername> --email <your email> --confirmed --role admin
|
|
```
|
|
|
|
If `WEB_DOMAIN` != `LOCAL_DOMAIN` make sure you have both set in your
|
|
shell's environment (or in the envdir) before running tootctl to add your
|
|
user.
|