Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker notes #778

Open
shleeable opened this issue Jun 3, 2020 · 1 comment
Open

Docker notes #778

shleeable opened this issue Jun 3, 2020 · 1 comment

Comments

@shleeable
Copy link
Contributor

shleeable commented Jun 3, 2020

1) Create VM (Recommend Latest Ubuntu LTS)

image

2) Update DNS (both A and AAAA records)

image

3) Update Server

  • apt update && apt upgrade -y
  • reboot now

4) Create non-root user (mastodon)

  • adduser mastodon

Example:
image

5) Install Docker

  • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

  • add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

  • apt-get update && apt-get install docker-ce docker-ce-cli containerd.io docker-compose

  • systemctl enable docker

  • usermod -aG docker mastodon

  • usermod -aG sudo mastodon

6) su into mastodon non-root user

  • su - mastodon

7) clone mastdon

  • git clone https://github.com/tootsuite/mastodon
  • cd mastodon
  • git checkout v3.1.4

Example:
image

8) Bootstrap the database container

notes: ONLY DO THIS ONCE OR DELETE THE ./postgres folder and start again

  • docker run -d --name bootstrap-postgres -e POSTGRES_USER=mastodon -e POSTGRES_PASSWORD=ThePasswordYouWannaUseHere -e POSTGRES_DB=mastodon_production -v /home/mastodon/mastodon/postgres:/var/lib/postgresql/data postgres:9.6-alpine

  • docker ps

  • docker logs bootstrap-postgres

  • docker stop bootstrap-postgres

  • docker rm bootstrap-postgres

Example:
image

9) Start the DB using docker-compose

Confirm the DB is working successfully

  • mv .env.production.sample .env.production
  • docker-compose up -d db
  • docker-compose logs db

image

10) Build your first mastodono image

  • docker-compose build
  • Go make a sandwich or signup for mailgun for email

NOTE: UNCOMMENT THE .env.production to R/W inside the web container

11) Start the rack:setup process

  • chmod 777 .env.production
  • docker-compose run --rm web bundle exec rake mastodon:setup

image

image

image

blah blah blah

image

12) prepare nginx and cerbot

  • sudo apt install nginx certbot python3-certbot-nginx
  • sudo systemctl enable nginx

13) generate HTTPS certs

  • sudo certbot certonly --standalone

image

14) update nginx

  • cp /home/mastodon/mastodon/dist/nginx.conf /etc/nginx/sites-available/mastodon
  • ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
  • edit /etc/nginx/sites-available/mastodon and update the domain

image

NOTE: COMMENT THE .env.production to R/W inside the web container

  • chmod 664 .env.production

15) Start the docker-compose cluster

  • docker-compose up -d

image

16) Test

image

17) login with the admin password generated above

image

@weex
Copy link

weex commented Aug 9, 2021

Wish I would have found this about two days ago but created this which compares well. https://gist.github.com/weex/265cfc6d1f05589c56d580f24089ecd5

With the .env.production chmod, does it get written there by default? I didn't think it did but my notes were missing that part and it's left me wondering where exactly it was saved. I replaced the file manually out of an abundance of caution and haven't had a chance to go back and test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants