!看了下网上几乎都是用docker的方式去搭建mastodon,方便是方便但是对于想自己做些修改的人还是略显不便,我也是个喜欢折腾的人,就用腾讯轻量送的那台4H4G80G试一下,配置是足够多人实例的运行的。
一、安装之前的准备工作
官方给出了几个建议,1,不要使用密码验证的方式登录SSH,2,使用fail2ban保护系统,屏蔽非法登录者,3,安装防火墙。应该说这几点可以很方便的在lighthouse面板上通过设置密钥和防火墙的方式很直观的进行操作,就不详述了;
example.com
您将以 root 用户身份运行命令。如果您还不是 root 用户,请切换到 root 用户:我这里选择的是腾讯云提供的centos10镜像,然后硬盘安装为Debian11,这样系统更加干净一点,个人洁癖,看官可以自己决定。
首先,安装 iptables-persistent。在安装过程中,它会询问您是否要保留当前规则 - 拒绝。
apt install -y iptables-persistent
编辑并放入其中:/etc/iptables/rules.v4
*filter
# Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allow SSH connections
# The -dport number should be the same port number you set in sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
使用 iptables-persistent,该配置将在引导时加载。但是由于我们现在没有重新启动,因此我们需要首次手动加载它:
iptables-restore < /etc/iptables/rules.v4
编辑并放入其中:/etc/fail2ban/jail.local
[DEFAULT]
destemail = your@email.here
sendername = Fail2Ban
[sshd]
enabled = true
port = 22
[sshd-ddos]
enabled = true
port = 22
最后重新启动 fail2ban:
systemctl restart fail2ban
二、更新系统软件包
apt update && apt upgrade -y
首先安装 curl、wget、gnupg、apt-transport-https、lsb-release 和 ca 证书:
apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates
curl -sL https://deb.nodesource.com/setup_16.x | bash -
wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
echo "deb [signed-by=/usr/share/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list
apt update
apt install -y \
imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \
g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf \
bison build-essential libssl-dev libyaml-dev libreadline6-dev \
zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev \
nginx redis-server redis-tools postgresql postgresql-contrib \
certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev
corepack enable
yarn set version stable
我们将使用rbenv来管理Ruby版本,因为更容易获得正确的版本,并在新版本发布后进行更新。rbenv必须为单个Linux用户安装,因此,首先我们必须创建Mastodon将运行的用户为:
adduser --disabled-login mastodon
然后,我们可以切换到mastodon用户:
su - mastodon
然后继续安装 rbenv 和 rbenv-build:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
设定正确的 Ruby 版本:
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.3
rbenv global 3.0.3
安装bundler:
gem install bundler --no-document
返回到root:
exit
为了获得最佳性能,您可以使用pgTune生成适当的配置并编辑值,然后再重新启动PostgreSQL/etc/postgresql/14/main/postgresql.confsystemctl restart postgresql
您将需要创建一个Mastodon可以使用的PostgreSQL用户。在简单的设置中使用“ident”身份验证是最容易的,即PostgreSQL用户没有单独的密码,并且可以由具有相同用户名的Linux用户使用。
进入postgres
sudo -u postgres psql
创建数据库并退出:
CREATE USER mastodon CREATEDB;
\q
是时候下载乳齿象代码了。切换到乳齿象用户:
su - mastodon
使用 git 下载 Mastodon 的最新稳定版本:
git clone https://github.com/tootsuite/mastodon.git live && cd live
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
现在安装 Ruby 和 JavaScript 依赖项:
bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install --pure-lockfile
只有在首次安装依赖项时才需要这两个命令。如果以后要更新或重新安装依赖项,就足够了。bundle configbundle install
运行交互式安装向导:
RAILS_ENV=production bundle exec rake mastodon:setup
这将:
配置文件另存为 。您可以根据自己的喜好查看和编辑它。请参阅有关配置的文档。.env.production
您现在已经完成了乳齿象用户,因此请切换回root:
exit
从Mastodon目录中复制nginx的配置模板:
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
然后进行编辑以替换为您自己的域名,并进行您可能需要的任何其他调整。/etc/nginx/sites-available/mastodonexample.com
重新加载nginx以使更改生效:
我们将使用Let's Encrypt来获取免费的SSL证书:
certbot --nginx -d example.com
这将获取证书,自动更新以使用新证书,并重新加载nginx以使更改生效。/etc/nginx/sites-available/mastodon
此时,您应该能够在浏览器中访问您的域名,并看到大象击中计算机屏幕错误页面。因为服务还没有启动。
从 Mastodon 目录中复制 systemd 服务模板:
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
如果您在任何时候偏离了默认值,请检查用户名和路径是否正确:
$EDITOR /etc/systemd/system/mastodon-*.service
最后,启动并启用新的 systemd 服务:
systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
它们现在将自动在启动时启动。
嗯哼!搞定!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。