6.0 KiB
Docker
The official GoToSocial Docker images are provided through Docker Hub.
Docker images are currently available for the following OS + architecture combinations:
Linux
- 386
- amd64
- arm6
- arm7
- arm64v8
FreeBSD
- amd64
Before following this guide, you should read the system requirements.
This guide assumes that you're using Linux.
Run with Docker Compose
You can run GoToSocial using any orchestration system that can manage Docker containers (Kubernetes, Nomad, etc).
For simplicity's sake, this guide will lead you through the installation with Docker Compose, using SQLite as your database.
Create a Working Dir
You need a working directory in which your docker-compose file will be located, and a directory for GoToSocial to store data in, so create these directories with the following command:
mkdir -p ~/gotosocial/data
Now change to the working directory you created:
cd ~/gotosocial
Get the latest docker-compose.yaml
Use wget
to download the latest docker-compose.yaml example, which we'll customize for our needs:
wget https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/docker-compose/docker-compose.yaml
Edit the docker-compose.yaml
Because GoToSocial can be configured using Environment Variables, we can skip mounting a config.yaml file into the container, to make our configuration simpler. We just need to edit the docker-compose.yaml file to change a few things.
First open the docker-compose.yaml file in your editor of choice. For example:
nano docker-compose.yaml
Now, you should change the GTS_HOST
environment variable to the domain you are running GoToSocial on.
You should also update the GoToSocial version number to use the latest stable release.
The list of releases can be found right here, with the newest release at the top.
Replace latest
in the docker-compose.yaml with the number of the release (without the leading v
or trailing version name). So for example if you want to run v0.3.1 Sleepy Sloth you should replace:
image: superseriousbusiness/gotosocial:latest
with:
image: superseriousbusiness/gotosocial:0.3.1
If you want to use LetsEncrypt for ssl certificates (https), you should also:
- Change the value of
GTS_LETSENCRYPT_ENABLED
to"true"
. - Remove the
#
before- "80:80"
in theports
section. - (Optional) Set
GTS_LETSENCRYPT_EMAIL_ADDRESS
to a valid email address to receive certificate expiry warnings etc.
Start GoToSocial
With those small changes out of the way, you can now start GoToSocial with the following command:
docker-compose up -d
After running this command, you should get an output like:
Creating network "gotosocial_gotosocial" with the default driver
Creating gotosocial ... done
If you want to follow the logs of GoToSocial, you can use:
docker logs -f gotosocial
If everything is OK, you should see something similar to the following:
time=2022-04-19T09:48:35Z level=info msg=connected to SQLITE database
time=2022-04-19T09:48:35Z level=info msg=MIGRATED DATABASE TO group #1 (20211113114307, 20220214175650, 20220305130328, 20220315160814) func=doMigration
time=2022-04-19T09:48:36Z level=info msg=instance account example.org CREATED with id 01EXX0TJ9PPPXF2C4N2MMMVK50
time=2022-04-19T09:48:36Z level=info msg=created instance instance example.org with id 01PQT31C7BZJ1Q2Z4BMEV90ZCV
time=2022-04-19T09:48:36Z level=info msg=media manager cron logger: start[]
time=2022-04-19T09:48:36Z level=info msg=media manager cron logger: schedule[now 2022-04-19 09:48:36.096127852 +0000 UTC entry 1 next 2022-04-20 00:00:00 +0000 UTC]
time=2022-04-19T09:48:36Z level=info msg=started media manager remote cache cleanup job: will run next at 2022-04-20 00:00:00 +0000 UTC
time=2022-04-19T09:48:36Z level=info msg=listening on 0.0.0.0:8080
Create your first User
Now that GoToSocial is running, you can execute commands inside the running container to create, confirm, and promote your admin user.
First create a user (replace the username, email, and password with appropriate values):
docker exec -it gotosocial /gotosocial/gotosocial admin account create --username some_username --email someone@example.org --password 'some_very_good_password'
Now confirm the user, replacing username with the value you used in the command above.
docker exec -it gotosocial /gotosocial/gotosocial admin account confirm --username some_username
Now promote the user you just created to admin privileges:
docker exec -it gotosocial /gotosocial/gotosocial admin account promote --username some_username
When running these commands, you'll get a bit of output like the following:
time=2022-04-19T09:53:29Z level=info msg=connected to SQLITE database
time=2022-04-19T09:53:29Z level=info msg=there are no new migrations to run func=doMigration
time=2022-04-19T09:53:29Z level=info msg=closing db connection
This is normal and indicates that the commands ran as expected.
Done
GoToSocial should now be running on your machine! To verify this, open your browser and go to http://localhost:443
. You should see the GoToSocial landing page. Well done!
(Optional) Reverse Proxy
If you want to run other webservers on port 443, or want to add an additional layer of security you might want to add NGINX, Traefik, or Apache httpd into your docker-compose to use as a reverse proxy.