前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【玩转Lighthouse】便于自己魔改的mastodon搭建方式

【玩转Lighthouse】便于自己魔改的mastodon搭建方式

原创
作者头像
滴滴叭叭雾
发布2022-04-22 16:53:01
1.8K0
发布2022-04-22 16:53:01
举报
文章被收录于专栏:initial

!看了下网上几乎都是用docker的方式去搭建mastodon,方便是方便但是对于想自己做些修改的人还是略显不便,我也是个喜欢折腾的人,就用腾讯轻量送的那台4H4G80G试一下,配置是足够多人实例的运行的。

一、安装之前的准备工作

官方给出了几个建议,1,不要使用密码验证的方式登录SSH,2,使用fail2ban保护系统,屏蔽非法登录者,3,安装防火墙。应该说这几点可以很方便的在lighthouse面板上通过设置密钥和防火墙的方式很直观的进行操作,就不详述了;

先决条件

  • 运行 Ubuntu 20.04Debian 11 的机器,您有 root 用户访问权限
  • Mastodon 服务器的域名(或子域),例如example.com
  • 电子邮件传递服务或其他 SMTP 服务器

您将以 root 用户身份运行命令。如果您还不是 root 用户,请切换到 root 用户:我这里选择的是腾讯云提供的centos10镜像,然后硬盘安装为Debian11,这样系统更加干净一点,个人洁癖,看官可以自己决定。

安装防火墙,仅将 SSH、HTTP 和 HTTPS 端口列入白名单

首先,安装 iptables-persistent。在安装过程中,它会询问您是否要保留当前规则 - 拒绝。

代码语言:javascript
复制
apt install -y iptables-persistent

编辑并放入其中:/etc/iptables/rules.v4

代码语言:javascript
复制
*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,该配置将在引导时加载。但是由于我们现在没有重新启动,因此我们需要首次手动加载它:

代码语言:javascript
复制
iptables-restore < /etc/iptables/rules.v4

安装 fail2ban,以便阻止重复登录尝试

编辑并放入其中:/etc/fail2ban/jail.local

代码语言:javascript
复制
[DEFAULT]
destemail = your@email.here
sendername = Fail2Ban

[sshd]
enabled = true
port = 22

[sshd-ddos]
enabled = true
port = 22

最后重新启动 fail2ban:

代码语言:javascript
复制
systemctl restart fail2ban

二、更新系统软件包

代码语言:javascript
复制
apt update && apt upgrade -y

首先安装 curl、wget、gnupg、apt-transport-https、lsb-release 和 ca 证书:

代码语言:javascript
复制
apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates
安装node.js
代码语言:javascript
复制
curl -sL https://deb.nodesource.com/setup_16.x | bash -
安装PostgreSQL
代码语言:javascript
复制
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

安装系统依赖

代码语言:javascript
复制
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
安装yarn
代码语言:javascript
复制
corepack enable
yarn set version stable

安装 Ruby

我们将使用rbenv来管理Ruby版本,因为更容易获得正确的版本,并在新版本发布后进行更新。rbenv必须为单个Linux用户安装,因此,首先我们必须创建Mastodon将运行的用户为:

代码语言:javascript
复制
adduser --disabled-login mastodon

然后,我们可以切换到mastodon用户:

代码语言:javascript
复制
su - mastodon

然后继续安装 rbenv 和 rbenv-build:

代码语言:javascript
复制
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 版本:

代码语言:javascript
复制
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.3
rbenv global 3.0.3

安装bundler:

代码语言:javascript
复制
gem install bundler --no-document

返回到root:

代码语言:javascript
复制
exit

设置

设置 PostgreSQL

性能配置(可选)

为了获得最佳性能,您可以使用pgTune生成适当的配置并编辑值,然后再重新启动PostgreSQL/etc/postgresql/14/main/postgresql.confsystemctl restart postgresql

创建用户

您将需要创建一个Mastodon可以使用的PostgreSQL用户。在简单的设置中使用“ident”身份验证是最容易的,即PostgreSQL用户没有单独的密码,并且可以由具有相同用户名的Linux用户使用。

进入postgres

代码语言:javascript
复制
sudo -u postgres psql

创建数据库并退出:

代码语言:javascript
复制
CREATE USER mastodon CREATEDB;
\q

设置乳齿象

是时候下载乳齿象代码了。切换到乳齿象用户:

代码语言:javascript
复制
su - mastodon

使用 git 下载 Mastodon 的最新稳定版本:

代码语言:javascript
复制
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 依赖项:

代码语言:javascript
复制
bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install --pure-lockfile

只有在首次安装依赖项时才需要这两个命令。如果以后要更新或重新安装依赖项,就足够了。bundle configbundle install

生成配置

运行交互式安装向导:

代码语言:javascript
复制
RAILS_ENV=production bundle exec rake mastodon:setup

这将:

  • 创建配置文件
  • 运行资产预编译
  • 创建数据库架构

配置文件另存为 。您可以根据自己的喜好查看和编辑它。请参阅有关配置的文档。.env.production

您现在已经完成了乳齿象用户,因此请切换回root:

代码语言:javascript
复制
exit

设置 nginx

从Mastodon目录中复制nginx的配置模板:

代码语言:javascript
复制
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以使更改生效:

获取 SSL 证书

我们将使用Let's Encrypt来获取免费的SSL证书:

代码语言:javascript
复制
certbot --nginx -d example.com

这将获取证书,自动更新以使用新证书,并重新加载nginx以使更改生效。/etc/nginx/sites-available/mastodon

此时,您应该能够在浏览器中访问您的域名,并看到大象击中计算机屏幕错误页面。因为服务还没有启动。

设置 systemd 服务

从 Mastodon 目录中复制 systemd 服务模板:

代码语言:javascript
复制
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/

如果您在任何时候偏离了默认值,请检查用户名和路径是否正确:

代码语言:javascript
复制
$EDITOR /etc/systemd/system/mastodon-*.service

最后,启动并启用新的 systemd 服务:

代码语言:javascript
复制
systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming

它们现在将自动在启动时启动。

哼!搞定!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先决条件
  • 安装防火墙,仅将 SSH、HTTP 和 HTTPS 端口列入白名单
  • 安装 fail2ban,以便阻止重复登录尝试
    • 安装node.js
      • 安装PostgreSQL
        • 安装系统依赖
          • 安装yarn
        • 安装 Ruby
        • 设置
          • 设置 PostgreSQL
            • 性能配置(可选)
            • 创建用户
          • 设置乳齿象
            • 安装最后的依赖项
            • 生成配置
          • 设置 nginx
            • 获取 SSL 证书
              • 设置 systemd 服务
              相关产品与服务
              云服务器
              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档