如何在Ubuntu 22.04服务器上使用Docker安装Mastodon?

博主:xiaoweixiaowei 2023-01-05 条评论

Mastodon是一个免费开源、去中心化的社交网络程序,它允许用户设置自托管服务器,并通过网络相互通信。本文主要介绍下如何在Ubuntu 22.04服务器上使用Docker安装Mastodon。

首先部署一个新的Ubuntu 22.04服务器实例(本文以基于Ubuntu 22.04系统的Vultr美国服务器为例),然后登录到服务器,开始安装Docker。

一、安装Docker

1、卸载旧的应用程序,如docker、docker.io和docker-engine。

sudo apt-get remove docker docker-engine docker.io containerd runc

2、设置存储库。

sudo apt-get update

sudo apt-get install -y ca-certificates curl gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo “deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

3、安装最新版本的Docker引擎。

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

二、为Mastodon准备一个目录

1、为Mastodon创建一个文件夹,本文使用/opt/mastodon作为主文件夹。

mkdir /opt/mastodon

2、分别创建名为.env.es和.env.mastodon的环境变量

touch /opt/mastodon/.env.es

touch /opt/mastodon/.env.mastodon

三、部署PostgreSQL数据库

1、登录到Vultr账号,然后在客户入口网站中的数据库部分,部署Vultr管理的PostgreSQL数据库。数据库部署好后,记录下PostgreSQL数据库登录凭据,后续操作会需要使用。

2、在/opt/mastodon/文件夹下创建一个名为docker-compose.yml文件,然后用以下内容替换tootsuite/mastodon:v4.0。

version: ‘3’

networks:

external_network:

internal_network:

internal: true

services:

redis:

restart: always

image: redis:7-alpine

networks:

– internal_network

healthcheck:

test: [ ‘CMD’, ‘redis-cli’, ‘ping’ ]

volumes:

– ./data/redis:/data

es:

restart: always

image: docker.elastic.co/elasticsearch/elasticsearch:7.17.8

environment:

– “ES_JAVA_OPTS=-Xms512m -Xmx512m -Des.enforce.bootstrap.checks=true”

– “xpack.license.self_generated.type=basic”

– “xpack.security.enabled=false”

– “xpack.watcher.enabled=false”

– “xpack.graph.enabled=false”

– “xpack.ml.enabled=false”

– “bootstrap.memory_lock=true”

– “cluster.name=mastodon-es”

– “discovery.type=single-node”

– “thread_pool.write.queue_size=1000”

env_file:

– .env.es

networks:

– external_network

– internal_network

healthcheck:

test:

[

“CMD-SHELL”,

“curl –silent –fail localhost:9200/_cluster/health || exit 1”

]

volumes:

– /opt/mastodon/data/elasticsearch:/usr/share/elasticsearch/data

ulimits:

memlock:

soft: -1

hard: -1

nofile:

soft: 65536

hard: 65536

ports:

– ‘127.0.0.1:9200:9200’

 

console:

image: tootsuite/mastodon:v4.0

env_file: .env.mastodon

command: /bin/bash

restart: “no”

depends_on:

– redis

networks:

– internal_network

– external_network

volumes:

– ./data/public/system:/mastodon/public/system

web:

image: tootsuite/mastodon:v4.0

restart: always

env_file: .env.mastodon

command: bash -c “rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000”

networks:

– internal_network

– external_network

healthcheck:

# prettier-ignore

test:

[

‘CMD-SHELL’,

‘wget -q –spider –proxy=off localhost:3000/health || exit 1’

]

ports:

– ‘127.0.0.1:3000:3000’

depends_on:

– es

– redis

volumes:

– ./data/public/system:/mastodon/public/system

streaming:

image: tootsuite/mastodon:v4.0

restart: always

env_file: .env.mastodon

command: node ./streaming

networks:

– external_network

– internal_network

healthcheck:

# prettier-ignore

test:

[

‘CMD-SHELL’,

‘wget -q –spider –proxy=off localhost:4000/api/v1/streaming/health || exit 1’

]

ports:

– ‘127.0.0.1:4000:4000’

sidekiq:

image: tootsuite/mastodon:v4.0

restart: always

env_file: .env.mastodon

command: bundle exec sidekiq

networks:

– external_network

– internal_network

volumes:

– ./data/public/system:/mastodon/public/system

healthcheck:

test: [ ‘CMD-SHELL’, “ps aux | grep ‘[s]idekiq 6’ || false” ]

四、使用Docker部署Elasticsearch

1、在/opt/mastodon/文件夹下创建一个.env.es文件,用以替换<YOUR_ELASTIC_SEARCH_PASSWORD>

ELASTIC_PASSWORD=<YOUR_ELASTIC_SEARCH_PASSWORD>

2、创建文件夹/opt/mastodon/data/elasticsearch,为Elasticsearch提供持久存储。

mkdir -p /opt/mastodon/data/elasticsearch

3、更改/opt/mastodon/data/elasticsearch文件夹权限。

sudo chown -R 1000:1000 /opt/mastodon/data/elasticsearch

4、增加vm.max_map_count存储。

sysctl -w vm.max_map_count=262144

5、使用文件编辑器打开文件/etc/sysctl.conf,并设置以下值。

vm.max_map_count=262144

6、使用Docker Compose开始弹性搜索。

docker compose -f /opt/mastodon/docker-compose.yml up -d es

7、为Elasticsearch创建搜索索引。

docker compose -f /opt/mastodon/docker-compose.yml run –rm console bin/tootctl search deploy

五、准备Mastodon密钥

运行以下命令两次,生成两个随机密码。

docker compose -f /opt/mastodon/docker-compose.yml run –rm console bundle exec rake secret

然后运行以下命令来生成自愿应用服务器身份(VAPID)密钥,以发送和接收网站推送通知。

docker compose -f /opt/mastodon/docker-compose.yml run –rm console bundle exec rake mastodon:webpush:generate_vapid_key

在/opt/mastodon/.env.mastodon文件夹中,编辑名为.env.mastodon文件,配置Mastodon环境变量,将相关数据替换为实际数值。

六、使用Docker Compose部署Mastodon

如果您使用Vultr托管的PostgreSQL数据库,请运行以下命令来设置数据库。

docker compose -f /opt/mastodon/docker-compose.yml run –rm console bundle exec rake db:migrate

如果使用Docker部署PostgreSQL,运行以下命令来设置数据库。

docker compose -f /opt/mastodon/docker-compose.yml run –rm console bundle exec rake db:setup

使用Docker Compose部署Mastodon服务。

docker compose -f /opt/mastodon/docker-compose.yml up -d

The End

发布于:2023-01-05,除非注明,否则均为 主机评测原创文章,转载请注明出处。