Kbin 설치 · 13 min read · Dec 18, 2025

Ubuntu 22.04에 Reddit과 유사한 Fediverse 콘텐츠 집계기 Kbin 설치하는 방법

Kbin은 fediverse를 위한 오픈 소스 Reddit과 유사한 콘텐츠 집계기 및 마이크로블로깅 플랫폼입니다. 커뮤니티를 생성하고 관리할 수 있으며 Mastodon, Pleroma 및 Peertube를 포함한 다른 ActivityPub 서비스와 통신할 수 있습니다.

Kbin의 인기 있는 인스턴스에 가입하고 사용할 수 있지만, 친구 및 가족을 위해 자신의 Kbin 인스턴스를 실행할 수도 있습니다. 이 튜토리얼에서는 Ubuntu 22.04 서버에 Kbin을 설치하는 방법을 배웁니다.

전제 조건

  • Ubuntu 22.04를 실행하는 서버.
  • 비루트 sudo 사용자.
  • example.com과 같은 완전한 도메인 이름(FQDN).
  • 모든 것이 업데이트되었는지 확인하십시오. $ sudo apt update $ sudo apt upgrade
  • 시스템에 필요한 몇 가지 패키지. $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y 이러한 패키지 중 일부는 이미 시스템에 설치되어 있을 수 있습니다.
  • 설치를 위해 Access Control List(ACL)가 필요합니다. 설치하십시오. $ sudo apt install acl

1단계 - 방화벽 구성

첫 번째 단계는 방화벽을 구성하는 것입니다. Ubuntu는 기본적으로 ufw(간단한 방화벽)를 제공합니다.

방화벽이 실행 중인지 확인하십시오.

$ sudo ufw status

다음과 같은 출력이 표시됩니다.

Status: inactive

SSH 포트를 허용하여 방화벽이 활성화될 때 현재 연결이 끊어지지 않도록 합니다.

$ sudo ufw allow OpenSSH

HTTP 및 HTTPS 포트도 허용합니다.

$ sudo ufw allow http
$ sudo ufw allow https

방화벽을 활성화합니다.

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

방화벽 상태를 다시 확인하십시오.

$ sudo ufw status

유사한 출력이 표시되어야 합니다.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

2단계 - Git 설치

Git은 일반적으로 Ubuntu 서버와 함께 설치되지만 설치되지 않은 경우 다음 명령을 사용하여 설치해야 합니다.

$ sudo apt install git

설치가 완료되었는지 확인하십시오.

$ git --version
git version 2.34.1

기본 정보로 Git을 구성합니다.

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

3단계 - Nginx 설치

Ubuntu는 구버전의 Nginx를 제공합니다. 최신 버전을 설치하려면 공식 Nginx 저장소를 다운로드해야 합니다.

Nginx의 서명 키를 가져옵니다.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Nginx의 안정적인 버전을 위한 저장소를 추가합니다.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

시스템 저장소를 업데이트합니다.

$ sudo apt update

Nginx를 설치합니다.

$ sudo apt install nginx

설치가 완료되었는지 확인하십시오.

$ nginx -v
nginx version: nginx/1.24.0

Nginx 서버를 시작합니다.

$ sudo systemctl start nginx

4단계 - PHP 설치 및 구성

Ubuntu 22.04는 다소 구식인 PHP 8.1.2 버전을 제공합니다. Ondrej의 PHP 저장소를 사용하여 최신 PHP 8.2 버전을 설치합니다.

$ sudo add-apt-repository ppa:ondrej/php

다음으로 Kbin에 필요한 PHP 및 확장을 설치합니다.

$ sudo apt install php8.2-common php8.2-fpm php8.2-cli php8.2-amqp php8.2-pgsql php8.2-gd php8.2-curl php8.2-simplexml php8.2-dom php8.2-xml php8.2-redis php8.2-mbstring php8.2-intl unzip

설치가 완료되었는지 확인하십시오.

$ php --version
PHP 8.2.7 (cli) (built: Jun  8 2023 15:27:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

파일 /etc/php/8.2/fpm/pool.d/www.conf를 엽니다.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

PHP 프로세스의 Unix 사용자/그룹을 nginx로 설정해야 합니다. 파일에서 user=www-datagroup=www-data 줄을 찾아 nginx로 변경합니다.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

파일에서 listen.owner = www-datalisten.group = www-data 줄을 찾아 nginx로 변경합니다.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력합니다.

PHP-FPM의 메모리 제한을 128MB에서 512MB로 늘립니다.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini

파일 업로드 크기를 8MB로 늘립니다.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' /etc/php/8.2/fpm/php.ini

PHP-FPM 서비스를 재시작합니다.

$ sudo systemctl restart php8.2-fpm

PHP 세션 디렉토리의 그룹을 Nginx로 변경합니다.

$ sudo chgrp -R nginx /var/lib/php/sessions

5단계 - Composer 설치

Composer는 PHP의 종속성 관리 도구이며 Kbin 설치에 필요합니다. Composer 설치 파일을 가져옵니다.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

설치 프로그램을 실행하여 Composer 바이너리를 생성합니다.

$ php composer-setup.php

설치 파일을 제거합니다.

$ php -r "unlink('composer-setup.php');"

composer.phar 바이너리를 /usr/local/bin 디렉토리로 이동합니다.

$ sudo mv composer.phar /usr/local/bin/composer

Composer 설치를 확인합니다.

$ composer --version
Composer version 2.5.8 2023-06-09 17:13:21

6단계 - PostgreSQL 설치 및 구성

Ubuntu 22.04는 기본적으로 PostgreSQL 14를 제공합니다. 대신 PostgreSQL 15를 사용할 것입니다.

다음 명령을 실행하여 PostgreSQL GPG 키를 추가합니다.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

APT 저장소를 소스 목록에 추가합니다.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

시스템 저장소를 업데이트합니다.

$ sudo apt update

이제 다음 명령을 사용하여 PostgreSQL을 설치할 수 있습니다.

$ sudo apt install postgresql postgresql-contrib

postgresql-contrib 패키지는 몇 가지 추가 유틸리티를 포함합니다.

PostgreSQL 서비스의 상태를 확인합니다.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2023-06-17 09:15:50 UTC; 3h 40min ago
   Main PID: 26989 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Jun 17 09:15:50 nspeaks systemd[1]: Starting PostgreSQL RDBMS...
Jun 17 09:15:50 nspeaks systemd[1]: Finished PostgreSQL RDBMS.

서비스가 기본적으로 활성화되고 실행 중임을 확인할 수 있습니다.

PostgreSQL 셸을 시작합니다.

$ sudo -i -u postgres psql

Kbin 데이터베이스를 생성합니다.

postgres=# CREATE DATABASE kbin;

Kbin 사용자를 생성하고 강력한 비밀번호를 선택합니다.

postgres-# CREATE USER kbinuser WITH PASSWORD 'Your_Password';

데이터베이스 소유자를 Kbin 사용자로 변경합니다.

postgres-# ALTER DATABASE kbin OWNER TO kbinuser;

셸을 종료합니다.

postgres-# \q

자격 증명이 작동하는지 확인합니다.

$ psql --username kbinuser --password --host localhost kbin
Password:
psql (15.3 (Ubuntu 15.3-1.pgdg22.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

kbin=>

\q를 입력하여 셸을 종료합니다.

7단계 - Nodejs 및 Yarn 설치

Ubuntu 22.04는 구식인 Node v12를 제공합니다. 이 튜토리얼을 작성하는 시점에서 최신 LTS 버전인 v18을 설치할 것입니다.

Node v18 설치 프로그램을 NodeSource에서 가져옵니다.

$ curl -sL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh

설치 프로그램 스크립트를 실행합니다.

$ sudo bash nodesource_setup.sh

Node.js를 설치합니다.

$ sudo apt install nodejs

Node.js 버전을 확인합니다.

$ node -v
v18.16.1

설치 파일을 삭제합니다.

$ rm nodesource_setup.sh

8단계 - Yarn 설치

Yarn의 GPG 키를 가져옵니다.

$ curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null

Yarn 소스를 시스템 저장소 목록에 추가합니다.

$ echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

시스템 저장소 목록을 업데이트합니다.

$ sudo apt update

Yarn을 설치합니다.

$ sudo apt install yarn

설치를 확인합니다.

$ yarn --version
1.22.19

9단계 - Redis 설치

Magento는 세션 및 캐시 저장소로 Redis를 사용합니다. 이는 완전히 선택 사항이며 데이터베이스를 세션 저장소로 사용할 수 있습니다. 그러나 Redis가 더 나은 성능을 발휘합니다. 최신 버전의 Magento는 Redis 7.0과 함께 작동합니다. Ubuntu는 Redis 6.0을 제공하므로 Redis 저장소를 사용하여 설치합니다.

공식 Redis GPG 키를 가져옵니다.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

APT 저장소를 소스 목록에 추가합니다.

$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

시스템 저장소 목록을 업데이트합니다.

$ sudo apt update

Redis 서버를 설치하기 위해 다음 명령을 실행합니다.

$ sudo apt install redis

Redis 버전을 확인합니다.

$ redis-server -v
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=3af367a78d5e21e9

다음 명령을 사용하여 서비스 연결을 확인합니다.

$ redis-cli

Redis 셸로 전환됩니다.

첫 번째 단계는 Redis 기본 사용자에 대한 비밀번호를 설정하는 것입니다. Your_Redis_Password를 선택한 강력한 비밀번호로 바꾸십시오. 비밀번호 앞에 > 문자를 붙이십시오.

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Redis 인증을 테스트합니다.

127.0.0.1:6379> AUTH Your_Redis_Password
OK

서비스에 핑을 보냅니다.

127.0.0.1:6379> ping
PONG

exit를 입력하여 서비스를 종료합니다.

원하는 경우 다음 명령을 사용하여 Redis 비밀번호를 생성할 수 있습니다.

$ openssl rand 60 | openssl base64 -A
OaYOuq6J9HhxMV0sGCeZbaGecphCl4GBfVkCOPkNjkQE1FX9DKpGSCJcDb8UV+AuFKA8tR1PgjGequn1

10단계 - RabbitMQ 설치 및 구성

Kbin은 메시지 큐를 위해 RabbitMQ가 필요합니다. Ubuntu 저장소에서 설치할 것입니다.

$ sudo apt install rabbitmq-server

Rabbit 사용자를 생성합니다. 강력한 비밀번호를 선택합니다.

$ sudo rabbitmqctl add_user kbin StrongPassword

사용자를 관리자 권한으로 설정합니다.

$ sudo rabbitmqctl set_user_tags kbin administrator

11단계 - Kbin 다운로드

Kbin을 다운로드하기 전에 Kbin 사용자 계정을 생성해야 합니다.

$ adduser kbin

kbin 사용자를 sudo 그룹에 추가합니다.

$ sudo usermod -aG sudo kbin

kbin 사용자로 로그인합니다.

$ su - kbin

/var/www/html/kbin 디렉토리를 생성합니다.

$ sudo mkdir /var/wwww/html/kbin -p

디렉토리로 전환합니다.

$ cd /var/www/html/kbin

현재 로그인한 사용자가 작업을 수행할 수 있도록 폴더에 적절한 권한을 부여합니다.

$ sudo chown $USER:$USER kbin

Kbin Git 저장소를 현재 폴더에 클론합니다. 명령 끝에 마침표 (.)를 추가하여 현재 폴더를 참조해야 합니다.

$ git clone https://codeberg.org/Kbin/kbin-core.git .

public/media 디렉토리를 생성합니다.

$ mkdir public/media

전체 권한을 부여합니다.

$ chmod 777 public/media

12단계 - 환경 파일 구성

Mercure JWT 비밀 키를 생성합니다.

$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

같은 명령을 다시 사용하여 앱 비밀을 생성합니다.

$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Kbin 디렉토리에서 .env 파일을 생성하고 열어 편집합니다.

$ nano .env

다음 코드를 붙여넣습니다. 위에서 생성한 키를 사용하십시오.

# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration

# kbin variables
SERVER_NAME="nspeaks.xyz" # production
KBIN_DOMAIN=nspeaks.xyz
KBIN_TITLE=Howtoforge
KBIN_DEFAULT_LANG=en
KBIN_FEDERATION_ENABLED=true
[email protected]
[email protected]
KBIN_JS_ENABLED=true
KBIN_REGISTRATIONS_ENABLED=true
KBIN_API_ITEMS_PER_PAGE=25
#KBIN_STORAGE_URL=/media
KBIN_META_TITLE="Kbin Lab"
KBIN_META_DESCRIPTION="content aggregator and micro-blogging platform for the fediverse"
KBIN_META_KEYWORDS="kbin, content agregator, open source, fediverse"
KBIN_HEADER_LOGO=false
KBIN_CAPTCHA_ENABLED=false

# Redis
REDIS_PASSWORD=YourRedisPassword
REDIS_DNS=redis://default:${REDIS_PASSWORD}@localhost:6379

###> symfony/framework-bundle ###
APP_ENV=prod
APP_SECRET=427f5e2940e5b2472c1b44b2d06e0525
###< symfony/framework-bundle ###

###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
POSTGRES_DB=kbin
POSTGRES_USER=kbin
POSTGRES_PASSWORD=Your_Password
POSTGRES_VERSION=15
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}?serverVersion=${POSTGRES_VERSION}&charset=utf8"
###< doctrine/doctrine-bundle ###

###> symfony/messenger ###
# Choose one of the transports below
RABBITMQ_PASSWORD=RabbitMQPassword
MESSENGER_TRANSPORT_DSN=amqp://kbin:${RABBITMQ_PASSWORD}@rabbitmq:5672/%2f/messages
#MESSENGER_TRANSPORT_DSN=doctrine://default
#MESSENGER_TRANSPORT_DSN=redis://${REDIS_PASSWORD}@redis:6379/messages
###< symfony/messenger ###

###> symfony/mailgun-mailer ###
#MAILER_DSN=mailgun+smtp://[email protected]:key@default?region=us
MAILER_DSN=smtp://AKIA3FIG4NVFH4TXXEXY:BJQvNI9U6JqSuUFQ9Ffd22Dvom/8KNwk7EIrFTRai02/@email-smtp.us-west-2.amazonaws.com:465
###< symfony/mailgun-mailer ###

###> symfony/mercure-bundle ###
# See https://symfony.com/doc/current/mercure.html#configuration
# The URL of the Mercure hub, used by the app to publish updates (can be a local URL)
MERCURE_URL=https://example.com/.well-known/mercure
# The public URL of the Mercure hub, used by the browser to connect
MERCURE_PUBLIC_URL=https://example.com/.well-known/mercure
# The secret used to sign the JWTs
MERCURE_JWT_SECRET="!ChangeThisMercureHubJWTSecretKey!"
###< symfony/mercure-bundle ###

###> symfony/lock ###
LOCK_DSN=flock
###< symfony/lock ###

파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력합니다.

13단계 - Kbin 설치

Composer를 사용하여 Kbin에 필요한 패키지를 설치합니다.

$ composer install --prefer-dist --no-dev
$ composer dump-env prod

캐시를 지웁니다.

$ APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear
$ composer clear-cache

미디어 폴더에 적절한 권한을 부여합니다.

$ sudo chown kbin:nginx public/media

setfacl 명령을 사용하여 적절한 파일 및 디렉토리 권한을 설정합니다. 다음 명령은 현재 사용 중인 웹 서버(Nginx)를 감지하고 기존 및 향후 파일 및 폴더에 대한 권한을 설정합니다.

$ HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)
$ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var

PostgreSQL 데이터베이스를 생성하고 마이그레이션합니다.

$ php bin/console doctrine:database:create
$ php bin/console doctrine:migrations:migrate

데이터 마이그레이션을 계속할 것인지 묻는 메시지가 표시됩니다. 계속하려면 yes를 입력하십시오.

WARNING! You are about to execute a migration in database "kbin" that could result in schema changes and data loss. Are you sure you wish to continue? (yes/no) [yes]:
 > yes

[notice] Migrating up to DoctrineMigrations\Version20230615203020
[notice] finished in 1373.9ms, used 24M memory, 79 migrations executed, 667 sql queries

[OK] Successfully migrated to version : DoctrineMigrations\Version20230615203020

Kbin 사이트의 공개 프론트 엔드를 설치하고 빌드합니다.

$ yarn install
$ yarn build

Kbin의 새 관리자 사용자를 생성합니다.

$ php bin/console kbin:user:create username [email protected] password

사용자에게 관리자 권한을 부여합니다.

$ php bin/console kbin:user:admin username

키를 업데이트합니다.

$ php bin/console kbin:ap:keys:update

14단계 - SSL 설치

SSL 인증서를 생성하기 위해 Certbot을 설치해야 합니다. Ubuntu의 저장소를 사용하여 Certbot을 설치하거나 Snapd 도구를 사용하여 최신 버전을 가져올 수 있습니다. 우리는 Snapd 버전을 사용할 것입니다.

Ubuntu 22.04는 기본적으로 Snapd가 설치되어 있습니다. 다음 명령을 실행하여 Snapd 버전이 최신인지 확인하십시오.

$ sudo snap install core && sudo snap refresh core

Certbot을 설치합니다.

$ sudo snap install --classic certbot

다음 명령을 사용하여 Certbot 명령이 /usr/bin 디렉토리에서 실행될 수 있도록 심볼릭 링크를 생성합니다.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

다음 명령을 실행하여 SSL 인증서를 생성합니다.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com

위 명령은 서버의 /etc/letsencrypt/live/example.com 디렉토리에 인증서를 다운로드합니다.

Diffie-Hellman 그룹 인증서를 생성합니다.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Certbot 갱신 스케줄러 서비스 상태를 확인합니다.

$ sudo systemctl list-timers

nextsnap.certbot.renew.service가 스케줄된 서비스 중 하나로 표시됩니다.

NEXT                        LEFT          LAST                        PASSED       UNIT                       ACTIVATES
Wed 2023-06-28 10:09:00 UTC 20min left    Wed 2023-06-28 09:39:00 UTC 9min ago     phpsessionclean.timer      phpsessionclean.service
Wed 2023-06-28 11:13:02 UTC 1h 24min left Wed 2023-06-28 04:41:28 UTC 5h 7min ago  ua-timer.timer             ua-timer.service
Wed 2023-06-28 12:11:00 UTC 2h 22min left n/a                         n/a          snap.certbot.renew.timer   snap.certbot.renew.service

SSL 갱신이 제대로 작동하는지 확인하기 위해 프로세스를 드라이 런합니다.

$ sudo certbot renew --dry-run

오류가 없으면 모든 설정이 완료된 것입니다. 인증서는 자동으로 갱신됩니다.

15단계 - Nginx 구성

파일 /etc/nginx/conf.d/kbin.conf를 생성하고 열어 편집합니다.

$ sudo nano /etc/nginx/conf.d/kbin.conf

다음 코드를 붙여넣습니다.

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

    access_log  /var/log/nginx/kbin.access.log;
    error_log   /var/log/nginx/kbin.error.log;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    ssl_session_timeout  1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    # use https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, It is free and secure
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s;

    root /var/www/html/kbin/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }

    # Pass PHP Scripts To FastCGI Server
    location ~* \.php$ {
        try_files $uri =404;
        fastcgi_index  index.php;
        fastcgi_pass unix:/run/php-fpm/www.sock; # Depends On The PHP Version
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
    }

    # deny access to writable files/directories
    location ~* ^/sites/*/(documents|edi|era) {
        deny all;
        return 404;
    }

    # deny access to certain directories
    location ~* ^/(contrib|tests) {
        deny all;
        return 404;
    }

    # Alternatively all access to these files can be denied
    location ~* ^/(admin|setup|acl_setup|acl_upgrade|sl_convert|sql_upgrade|gacl/setup|ippf_upgrade|sql_patch)\.php {
        deny all;
        return 404;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt  {
        log_not_found off;
        access_log off;
    }

    location ~ \. {
        deny all;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  example.com;
    return 301   https://$host$request_uri;
}

Nginx 구성에서 사용할 루트 디렉토리가 /var/www/html/kbin/public/임을 주의하십시오.

작업이 완료되면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 표시되면 Y를 입력합니다.

파일 /etc/nginx/nginx.conf를 열어 편집합니다.

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.

server_names_hash_bucket_size  64;

작업이 완료되면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 표시되면 Y를 입력합니다.

Nginx 구성 파일 구문을 확인합니다.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginx 서비스를 재시작합니다.

$ sudo systemctl restart nginx

16단계 - Kbin 접근

URL https://example.com을 열면 다음 Kbin 홈페이지가 표시됩니다.

Kbin 홈페이지

상단의 로그인 링크를 클릭하여 로그인 페이지를 엽니다.

Kbin 로그인 페이지

12단계에서 생성한 자격 증명을 입력하고 로그인 버튼을 클릭하여 진행합니다. Kbin 홈페이지로 돌아갑니다. 여기서부터 Kbin을 사용할 수 있습니다.

결론

이로써 Ubuntu 22.04 서버에 Reddit과 유사한 콘텐츠 집계기 Kbin을 설치하는 튜토리얼이 종료됩니다. 질문이 있으면 아래 댓글에 남겨주세요.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.