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-data 및 group=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-data 및 listen.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
next에 snap.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 홈페이지가 표시됩니다.

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

12단계에서 생성한 자격 증명을 입력하고 로그인 버튼을 클릭하여 진행합니다. Kbin 홈페이지로 돌아갑니다. 여기서부터 Kbin을 사용할 수 있습니다.
결론
이로써 Ubuntu 22.04 서버에 Reddit과 유사한 콘텐츠 집계기 Kbin을 설치하는 튜토리얼이 종료됩니다. 질문이 있으면 아래 댓글에 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.