|
1 year ago | |
---|---|---|
rootfs/etc/service | 1 year ago | |
Dockerfile | 1 year ago | |
Makefile | 1 year ago | |
README.md | 1 year ago | |
install.sh | 1 year ago | |
prereqs.sh | 1 year ago |
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.
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)RUN_DB_MIGRATIONS
(default: true
, set to empty string ""
to disable)SIDEKIQ_WORKERS
: (default: 5
)/state
- everything lives in here, db, redis, static files, logs,
everythingNote 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.
3000
: mastodon web (no tls, do that elsewhere)4000
: mastodon streamingAll praise to wonderfall’s earlier single-container mastodon:
(I only made this because it did not include postfix/postgres/redis.)
Jeffrey Paul <sneak@sneak.berlin>
For use with Caprover.
(Note that the NetData system monitor container that ships with CapRover is spyware, and CapRover refuses to address that they are embedding spyware, and the container maintainer refuses to patch out the spyware so it is advisable that you do not enable NetData when using CapRover unless you would like your usage data and IP and a unique identifier silently transmitted to Google.)
{
"schemaVersion": 2,
"imageName": "sneak/mastodon:v3.0.1"
}
# docker exec -ti <container name> /bin/bash
root@c81a376bf546:~/app# su -l --preserve-environment 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. If you are running within a PaaS like Caprover or Heroku and you set
them in the GUI, they should be defined on the container itself and already
in your shell (and stay there with --preserve-environment
). You can check
by running env
before running bin/tootctl
.