sudo dnf update
sudo dnf install -y glibc-langpack-en
sudo localectl set-locale en_US.utf-8

# SELinuxをpermissiveに
sudo setenforce 0
sudo vi /etc/selinux/config # enforceからpermissiveへ

#firewall
sudo dnf install firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --zone=public --add http https
sudo firewall-cmd --reload

# misskeyの依存関係を取得
sudo dnf install <https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm>
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release
sudo dnf install --nogpgcheck <https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$>(rpm -E %rhel).noarch.rpm
sudo dnf install postgresql15-server
 nodejs yarnpkg redis ffmpeg g++ gcc git

# misskeyの取得
sudo useradd -M -r -d /opt/misskey -s /sbin/nologin misskey
sudo -u misskey git clone github.com/misskey-dev/misskey /opt/misskey
cd /opt/misskey
sudo -Hu misskey git submodule update --init

# install
sudo -Hu misskey NODE_ENV=production yarn install

# misskeyのconfigをいじる
sudo -Hu misskey cp .config/{example,default}.yml
sudo -Hu misskey vi .config/default.yml

# swap (1GBのマシンではbuildがコケるので)
free
sudo fallocate -l 4G /var/cache/swap1 #少なくとも RAM+swapで3GBはあれば大丈夫そう
sudo chmod 600 /var/cache/swap1
sudo mkswap /var/cache/swap1
sudo swapon /var/cache/swap1

# build
sudo -Hu misskey env NODE_OPTIONS="--max-old-space-size=2048" NODE_ENV=production yarn build

# postgres
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable --now postgresql-15
sudo -u postgres createuser --interactive -P misskey
sudo -Hu misskey createdb -O misskey misskey

# migration
sudo -Hu misskey NODE_ENV=production yarn run init

# redis
sudo vi /etc/redis/redis.conf # "supervised systemd"を明示的に記述
sudo systemctl enable --now redis
sudo redis-cli ping # PONGが帰ればOK

# test起動(動作確認なので動いたらCtrl-Cなどで止める)
sudo -Hu misskey NODE_ENV=production yarn run start

# systemd unitの記述
sudo vi /etc/systemd/system/misskey.service
sudo systemctl daemon-reload
sudo systemctl enable --now misskey

# nginx
sudo dnf install nginx
## -- nginxconfig.ioからファイルを取得する --
sudo vi /etc/nginx/sites-available/$FQDN.conf
## include "./nginxconfig.io/general.conf"をコメントアウト
## HTTPS部分を一旦コメントアウト
sudo nginx -t # configファイルが文法的に正しいかを確認
sudo systemctl enable --now nginx

# certbot
sudo dnf install certbot
sudo certbot certonly --webroot -w /var/www/_letsencrypt -d "$FQDN" --test-cert #一旦テストで取得(正規の鯖にはrate limitがあるため)
sudo certbot certonly --webroot -w /var/www/_letsencrypt -d "$FQDN" #テスト取得できれば本チャンでtry

# HTTPS対応
sudo vi /etc/nginx/sites-available/$FQDN.conf # HTTPS部分を元に戻す
sudo nginx -t
sudo systemctl reload nginx