自建 Gotosocial | 一个 ActivityPub 联邦社交网络程序

自建 Gotosocial | 一个 ActivityPub 联邦社交网络程序

GoToSocial 是一个使用 Golang 编写的 ActivityPub 社交网络服务器,它是一个轻量级、安全的联邦社交网络入口,可让用户保持联系、发布和分享图片、文章等内容。GoToSocial 强调用户的隐私和自由,不会跟踪用户的行为,也不会为了向用户展示广告而收集他们的数据。

使用 GoToSocial 可以让用户进入联邦社交网络的世界,联邦网络是一种基于协议的社交网络结构,它允许用户从一个社交网络实例互相跟随、交流和分享内容。这种结构可以让用户自由选择社交网络平台,同时避免某个平台垄断市场。用户可以在不同的实例之间进行跟随和互动,这样就可以更好地保护用户的隐私和自由。

使用 GoToSocial 还可以避免被广告和推荐算法影响,因为 GoToSocial 不使用这些算法。GoToSocial 的时间轴是按照发布时间排序的,用户可以通过关注人和互动方式来定制自己的时间轴和体验。此外,GoToSocial 的用户体验不是基于用户的参与度和粘性,而是基于用户的兴趣和交互方式。这种设计可以让用户更自由地探索和发现内容,而不是受到平台算法的影响。

总之,使用 GoToSocial 可以让用户加入联邦社交网络的世界,保护用户的隐私和自由,避免被广告和推荐算法影响,探索和发现自己感兴趣的内容。

—— 来自 ChatGPT

GoToSocial 是一个十分轻量(轻量到甚至没有用户界面,需要使用第三方程序登录、兼容 Mastodon 应用进行使用)的 ActivityPub 联邦社交网络程序,自建 GoToSocial 可以避免您的信息因为所在实例倒闭、不可抗力等原因化为乌有。


一、使用:

修改个人信息

访问 https://social.example.com/settings 使用账号密码登录即可进行修改

发布推文

通过第三方 APP 进行发布、浏览、关注等操作,可以使用 Mastodon 的客户端进行:

二、搭建教程:

1/ 自有 VPS 安装

安装 Docker

curl -L get.docker.com | bash

创建安装目录

mkdir -p /var/www/gotosocial/data && cd /var/www/gotosocial

配置 docker-compose.yaml 文件

nano docker-compose.yaml

修改下方 social.example.com 为您自己的域名,并粘贴进去

version: "3.3"

services:
  gotosocial:
    image: superseriousbusiness/gotosocial:latest
    container_name: gotosocial
    user: 1000:1000
    networks:
      - gotosocial
    environment:
      GTS_HOST: social.example.com
      GTS_DB_TYPE: sqlite
      GTS_DB_ADDRESS: /gotosocial/storage/sqlite.db
      GTS_LETSENCRYPT_ENABLED: "false"
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - ./data:/gotosocial/storage
    restart: "always"

networks:
  gotosocial:
    ipam:
      driver: default

运行

docker compose up -d

创建用户

docker exec -it gotosocial /gotosocial/gotosocial admin account create --username YOUR_USERNAME --email YOUR@EMAIL.COM --password 'SOME_VERY_GOOD_PASSWD'

设置管理员

docker exec -it gotosocial /gotosocial/gotosocial admin account promote --username YOUR_USERNAME

安装 Nginx

# 以 Debian/Ubuntu 为例

apt install -y lsb-release ca-certificates apt-transport-https curl gnupg dpkg
 
curl -sS https://n.wtf/public.key | gpg --dearmor > /usr/share/keyrings/n.wtf.gpg
 
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/n.wtf.gpg] https://mirror-cdn.xtom.com/sb/nginx/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/n.wtf.list
 
apt update
 
apt install nginx-extras -y

安装 ACME.SH

curl -L get.acme.sh | bash

重启终端,创建 Nginx 配置文件

nano /etc/nginx/conf.d/gotosocial.conf

粘贴下方内容

server {
  listen 80;
  listen [::]:80;
  server_name social.example.com;
  root /var/www/gotosocial;
  location /.well-known/acme-challenge/ { allow all; }
  location / { return 301 https://$host$request_uri; }
}

重启 Nginx nginx -s reload,将域名指向 VPS 的 IP 地址,生成 SSL 证书

acme.sh --issue -d social.example.com -w /var/www/gotosocial --server letsencrypt

生成的证书大致如下

[Thu 12 Nov 2020 07:16:28 AM EST] Your cert is in  /root/.acme.sh/social.example.com/social.example.com.cer
[Thu 12 Nov 2020 07:16:28 AM EST] Your cert key is in  /root/.acme.sh/social.example.com/social.example.com.key
[Thu 12 Nov 2020 07:16:30 AM EST] The intermediate CA cert is in  /root/.acme.sh/social.example.com/ca.cer
[Thu 12 Nov 2020 07:16:30 AM EST] And the full chain certs is there:  /root/.acme.sh/social.example.com/fullchain.cer

我们需要其中的

/root/.acme.sh/social.example.com/fullchain.cer
/root/.acme.sh/social.example.com/social.example.com.key

再次编辑 Nginx 配置文件

nano /etc/nginx/conf.d/gotosocial.conf

按下方内容粘贴

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
  listen 80;
  listen [::]:80;
  server_name social.example.com;
  root /var/www/gotosocial;
  location /.well-known/acme-challenge/ { allow all; }
  location / { return 301 https://$host$request_uri; }
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name social.example.com;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_session_tickets off;

  ssl_certificate /root/.acme.sh/social.example.com/fullchain.cer;
  ssl_certificate_key /root/.acme.sh/social.example.com/social.example.com.key;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 80m;

  root /var/www/gotosocial;

  gzip on;
  gzip_disable "msie6";
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml image/x-icon;

  location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
  }

重启 Nginx nginx -s reload,现在即可访问您的 Gotosocial 了。

2/ 在 Fly.io 免费安装

准备:

  • 注册 Fly.io 账号,并绑卡(避免滥用);
  • 注册 Cloudflare 并启用 R2,启用 R2 需要绑卡。新建一个储存桶并创建一个 API 令牌。
  • 注册 Yugabyte 账号,并创建数据库,地区选择tokyo,创建过程记得保存用户名及密码,等创建成功后点右上角 connect 按钮选择 Connect to your Application - Parameters 获取连接信息,我们需要其中的 Host Port Database

安装 flyctl

# Linux
curl -L https://fly.io/install.sh | sh

# macOS
curl -L https://fly.io/install.sh | sh

# Windows,需要开启 RemoteSigned: 管理员运行 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
powershell -Command "iwr https://fly.io/install.ps1 -useb | iex"

登录

flyctl auth login

# 若登录失败使用
# flyctl auth login -i 
# 输入账号密码进行登录

创建安装目录

mkdir ~/gotosocial && cd gotosocial

创建 APP

flyctl launch --name YOURAPPNAME --image=superseriousbusiness/gotosocial:latest --region nrt --no-deploy

创建储存卷,1G 足矣

flyctl volumes create social_data --region nrt --size 1

编辑当前目录下的 fly.toml 配置文件,按下方配置(下方配置文件内容已按照 fly.io v2 部署平台进行相应的修订)

app = "yjksocial"
primary_region = "nrt"

[build]
  image = "superseriousbusiness/gotosocial:latest"

[env]
  GTS_HOST = "social.example.com"
  GTS_DB_TYPE = "postgres"
  GTS_DB_PORT = 5433
  GTS_DB_ADDRESS = "之前记录的数据库 Host"
  GTS_DB_USER = "admin"
  GTS_DB_PASSWORD = "之前记录的数据库用户密码"
  GTS_DB_DATABASE = "yugabyte"
  GTS_DB_TLS_MODE = "enable"
  GTS_LETSENCRYPT_ENABLED = "false"
  GTS_STORAGE_BACKEND = "s3"
  GTS_STORAGE_S3_ENDPOINT = "Cloudflare R2 API 地址,记得去掉 “/仓库名”"
  GTS_STORAGE_S3_ACCESS_KEY = "Cloudflare R2 API ACCESS KEY"
  GTS_STORAGE_S3_SECRET_KEY = "Cloudflare R2 API SECRET KEY"
  GTS_STORAGE_S3_BUCKET = "Cloudflare R2 仓库名"
  GTS_STORAGE_S3_PROXY = true

[mounts]
  source="social_data"
  destination="/gotosocial/storage"

[http_service]
  internal_port = 8080
  force_https = true
  auto_stop_machines = false
  auto_start_machines = true
  min_machines_running = 1
  processes = ["app"]

启动 APP

flyctl deploy

能成功访问 https://YOURAPPNAME.fly.dev 则代表部署成功。

绑定域名,将您的域名 CNMAEYOURAPPNAME.fly.dev,然后运行

flyctl certs add social.example.com

等待几分钟即可。

创建用户及设置管理员

# 在 fly.toml 文件目录执行
flyctl ssh console
# 创建用户
/gotosocial/gotosocial admin account create --username YOUR_USERNAME --email YOUR@EMAIL.COM --password 'SOME_VERY_GOOD_PASSWD'

# 设置管理员
/gotosocial/gotosocial admin account promote --username YOUR_USERNAME

Read more

榨干 ORACLE ARM 5/ 安装 Windows

榨干 ORACLE ARM 5/ 安装 Windows

不建议,具有删号的风险、具有变砖的风险。不适合不会救砖的同学。 准备工作 登录 OCI 后台,设置一下实例【传输中加密】为【已禁用】 安装依赖 apt install curl wget -y 安装 Windows 1、DD 的方式,大概历时 15 分钟 curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh && bash reinstall.sh dd --img https://r2.hotdog.eu.org/win11-arm-with-pagefile-15g.

By YJK
自建 Docker Hub 镜像

自建 Docker Hub 镜像

使用 Nginx server { listen 443 ssl; server_name 域名; ssl_certificate 证书地址; ssl_certificate_key 密钥地址; ssl_session_timeout 24h; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; location / { proxy_pass https://registry-1.docker.io; # Docker Hub 的官方镜像仓库 proxy_

By YJK
[AD] 闲置 VPS 挂机赚钱 | 已提现超过 100 USD

[AD] 闲置 VPS 挂机赚钱 | 已提现超过 100 USD

闲置 VPS 挂机销售流量赚钱,通过以下链接注册赠送 5USD,即只要再挂满 5USD 便可提现 10USD,可通过 USDT(TRC20) 提现至 Crypto 钱包。 * https://traffmonetizer.com/?aff=793646 根据 TM 最新的政策, 新注册账号未赠送 5 USD。 还有一个 Repocket,注册送 5U,满 20U 10USD 提现。 Repocket 更新了它的提现政策,满 10 刀即可通过 Paypal、Wise 提现。 * https://link.repocket.co/BTrB Traffmonetizer 挂机方法 1/

By YJK
快速精简 Windows 11

快速精简 Windows 11

1. 使用 tiny11builder 快速构建 Windows 11 精简系统 2. 使用 Win11Debloat 精简现有 Windows 11 操作系统 使用 tiny11builder 快速构建 Windows 11 精简系统 用户现在可以使用 tiny11builder 轻松构建一个精简版的 Windows 11 系统,优化性能同时保持核心功能,避免使用被植入病毒的第三方精简系统。本文将指导你如何使用 tiny11builder 来创建一个轻量级的 Windows 11 系统。 步骤 1: 准备工作 在开始之前,你需要确保已经满足以下条件: 1. 一台运行 Windows 10 或更高版本的计算机; 2. 准备一个 Windows 11 ISO 文件,

By YJK
Mastodon