如何在Ubuntu 22.04服务器上使用Docker安装Mastodon?
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
发布于:2023-01-05,除非注明,否则均为
原创文章,转载请注明出处。
发表评论