Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /var/www/cyoa-cafe/backend/ecosystem.config.js
- module.exports = {
- apps: [
- {
- name: 'strapi',
- cwd: '/var/www/cyoa-cafe/backend',
- script: 'npm',
- args: 'start',
- env: {
- NODE_ENV: 'production',
- },
- user: 'www-data'
- },
- ],
- };
- /var/www/cyoa-cafe/backend/config/server.js
- const fs = require('fs');
- module.exports = ({ env }) => ({
- host: env('HOST', '0.0.0.0'),
- port: env.int('PORT', 1337),
- url: env('PUBLIC_URL', 'https://cyoa.cafe'),
- proxy: true,
- poweredBy: false,
- app: {
- keys: env.array('APP_KEYS'),
- },
- logger: {
- level: env('LOG_LEVEL', 'debug'),
- exposeInContext: true,
- requests: true,
- },
- webhooks: {
- populateRelations: env.bool('WEBHOOKS_POPULATE_RELATIONS', false),
- },
- admin: {
- auth: {
- secret: env('ADMIN_JWT_SECRET'),
- },
- url: '/admin',
- watchIgnoreFiles: [
- './public/uploads',
- './public/.well-known',
- ],
- },
- });
- /var/www/cyoa-cafe/backend/config/database.js
- const path = require('path');
- module.exports = ({ env }) => {
- const client = env('DATABASE_CLIENT', 'sqlite');
- const connections = {
- mysql: {
- connection: {
- connectionString: env('DATABASE_URL'),
- host: env('DATABASE_HOST', 'localhost'),
- port: env.int('DATABASE_PORT', 3306),
- database: env('DATABASE_NAME', 'strapi'),
- user: env('DATABASE_USERNAME', 'strapi'),
- password: env('DATABASE_PASSWORD', 'strapi'),
- ssl: env.bool('DATABASE_SSL', false) && {
- key: env('DATABASE_SSL_KEY', undefined),
- cert: env('DATABASE_SSL_CERT', undefined),
- ca: env('DATABASE_SSL_CA', undefined),
- capath: env('DATABASE_SSL_CAPATH', undefined),
- cipher: env('DATABASE_SSL_CIPHER', undefined),
- rejectUnauthorized: env.bool(
- 'DATABASE_SSL_REJECT_UNAUTHORIZED',
- true
- ),
- },
- },
- pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) },
- },
- mysql2: {
- connection: {
- host: env('DATABASE_HOST', 'localhost'),
- port: env.int('DATABASE_PORT', 3306),
- database: env('DATABASE_NAME', 'strapi'),
- user: env('DATABASE_USERNAME', 'strapi'),
- password: env('DATABASE_PASSWORD', 'strapi'),
- ssl: env.bool('DATABASE_SSL', false) && {
- key: env('DATABASE_SSL_KEY', undefined),
- cert: env('DATABASE_SSL_CERT', undefined),
- ca: env('DATABASE_SSL_CA', undefined),
- capath: env('DATABASE_SSL_CAPATH', undefined),
- cipher: env('DATABASE_SSL_CIPHER', undefined),
- rejectUnauthorized: env.bool(
- 'DATABASE_SSL_REJECT_UNAUTHORIZED',
- true
- ),
- },
- },
- pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) },
- },
- postgres: {
- connection: {
- connectionString: env('DATABASE_URL'),
- host: env('DATABASE_HOST', 'localhost'),
- port: env.int('DATABASE_PORT', 5432),
- database: env('DATABASE_NAME', 'strapi'),
- user: env('DATABASE_USERNAME', 'strapi'),
- password: env('DATABASE_PASSWORD', 'strapi'),
- ssl: env.bool('DATABASE_SSL', false) && {
- key: env('DATABASE_SSL_KEY', undefined),
- cert: env('DATABASE_SSL_CERT', undefined),
- ca: env('DATABASE_SSL_CA', undefined),
- capath: env('DATABASE_SSL_CAPATH', undefined),
- cipher: env('DATABASE_SSL_CIPHER', undefined),
- rejectUnauthorized: env.bool(
- 'DATABASE_SSL_REJECT_UNAUTHORIZED',
- true
- ),
- },
- schema: env('DATABASE_SCHEMA', 'public'),
- },
- pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) },
- },
- sqlite: {
- connection: {
- filename: path.join(
- __dirname,
- '..',
- env('DATABASE_FILENAME', '.tmp/data.db')
- ),
- },
- useNullAsDefault: true,
- },
- };
- return {
- connection: {
- client,
- ...connections[client],
- acquireConnectionTimeout: env.int('DATABASE_CONNECTION_TIMEOUT', 60000),
- },
- };
- };
- /var/www/cyoa-cafe/backend/config/middlewares.js
- module.exports = [
- 'strapi::errors',
- {
- name: 'strapi::security',
- config: {
- contentSecurityPolicy: {
- useDefaults: true,
- directives: {
- 'connect-src': ["'self'", 'https:'],
- 'img-src': ["'self'", 'data:', 'blob:', 'https://cyoa.cafe'],
- 'media-src': ["'self'", 'data:', 'blob:'],
- upgradeInsecureRequests: null,
- },
- },
- cors: {
- enabled: true,
- origin: ['https://cyoa.cafe', 'http://cyoa.cafe', 'http://localhost:5173', 'http://localhost:3000', 'http://194.54.156.199:3000'],
- credentials: true,
- methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
- headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],
- exposedHeaders: ['Content-Range', 'X-Content-Range'],
- },
- },
- },
- 'strapi::cors',
- 'strapi::poweredBy',
- 'strapi::logger',
- 'strapi::query',
- 'strapi::body',
- 'strapi::session',
- 'strapi::favicon',
- 'strapi::public',
- ];
- /var/www/cyoa-cafe/backend/config/admin.js
- module.exports = ({ env }) => ({
- auth: {
- secret: env('ADMIN_JWT_SECRET'),
- },
- apiToken: {
- salt: env('API_TOKEN_SALT'),
- },
- transfer: {
- token: {
- salt: env('TRANSFER_TOKEN_SALT'),
- },
- },
- flags: {
- nps: env.bool('FLAG_NPS', true),
- promoteEE: env.bool('FLAG_PROMOTE_EE', true),
- },
- });
- # Permissions
- ls -la /var/www/cyoa-cafe/backend
- total 880
- drwxr-xr-x 12 www-data www-data 4096 Aug 24 15:42 .
- drwxr-xr-x 4 www-data www-data 4096 Aug 23 23:48 ..
- drwxr-xr-x 2 www-data www-data 12288 Aug 24 10:59 build
- drwxr-xr-x 2 www-data www-data 4096 Aug 24 11:13 config
- drwxr-xr-x 3 www-data www-data 4096 Aug 22 13:30 database
- -rwxr-xr-x 1 www-data www-data 232 Aug 24 15:29 ecosystem.config.js
- -rwxr-xr-x 1 www-data www-data 249 Aug 22 13:30 .editorconfig
- -rwxr-xr-x 1 www-data www-data 763 Aug 23 15:47 .env
- -rwxr-xr-x 1 www-data www-data 177 Aug 22 13:30 .env.example
- -rwxr-xr-x 1 www-data www-data 32 Aug 22 13:30 .eslintignore
- -rwxr-xr-x 1 www-data www-data 541 Aug 22 13:30 .eslintrc
- -rwxr-xr-x 1 www-data www-data 497 Aug 22 13:30 favicon.png
- drwxr-xr-x 8 www-data www-data 4096 Aug 23 17:12 .git
- -rwxr-xr-x 1 www-data www-data 1511 Aug 22 13:30 .gitignore
- -rwxr-xr-x 1 www-data www-data 132 Aug 22 13:30 jsconfig.json
- drwxr-xr-x 986 www-data www-data 36864 Aug 24 01:07 node_modules
- -rwxr-xr-x 1 www-data www-data 991 Aug 22 15:02 package.json
- -rwxr-xr-x 1 www-data www-data 754230 Aug 24 01:07 package-lock.json
- drwxr-xr-x 4 www-data www-data 4096 Aug 24 13:17 public
- -rwxr-xr-x 1 www-data www-data 2167 Aug 22 13:30 README.md
- drwxr-xr-x 5 www-data www-data 4096 Aug 22 13:30 src
- drwxr-xr-x 3 www-data www-data 4096 Aug 22 13:30 .strapi
- -rw------- 1 www-data www-data 94 Aug 24 15:42 .strapi-updater.json
- drwxr-xr-x 2 www-data www-data 4096 Aug 24 15:45 .tmp
- drwxr-xr-x 3 www-data www-data 4096 Aug 22 13:30 types
- ls -la /var/www/cyoa-cafe/backend/public
- total 20
- drwxr-xr-x 4 www-data www-data 4096 Aug 24 13:17 .
- drwxr-xr-x 12 www-data www-data 4096 Aug 24 15:42 ..
- -rwxr-xr-x 1 www-data www-data 121 Aug 22 13:30 robots.txt
- drwxr-xr-x 2 www-data www-data 4096 Aug 24 15:45 uploads
- drwxr-xr-x 2 www-data www-data 4096 Aug 23 21:56 uploads_temp
- ls -la /var/www/cyoa-cafe/backend/build
- total 10124
- drwxr-xr-x 2 www-data www-data 12288 Aug 24 10:59 .
- drwxr-xr-x 12 www-data www-data 4096 Aug 24 15:42 ..
- -rwxr-xr-x 1 www-data www-data 12804 Aug 24 10:59 1041.2955d22e.chunk.js
- -rwxr-xr-x 1 www-data www-data 7708 Aug 24 10:59 1047.47808b0e.chunk.js
- etc. all www-data
- pm2 status strapi
- ┌────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
- │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
- ├────┼───────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
- │ 0 │ strapi │ default │ N/A │ fork │ 217649 │ 64m │ 15 │ online │ 0% │ 70.6mb │ www-data │ disabled │
- └────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
- pm2 logs strapi --lines 20
- [TAILING] Tailing last 20 lines for [strapi] process (change the value with --lines option)
- /root/.pm2/logs/strapi-error.log last 20 lines:
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- 0|strapi | sh: 1: strapi: Permission denied
- /root/.pm2/logs/strapi-out.log last 20 lines:
- 0|strapi | [2024-08-24 16:29:08.086] http: GET /admin/project-type (3 ms) 200
- 0|strapi | [2024-08-24 16:29:08.333] http: GET /admin/project-type (3 ms) 200
- 0|strapi | [2024-08-24 16:29:08.418] http: POST /admin/renew-token (6 ms) 200
- 0|strapi | [2024-08-24 16:29:08.423] http: GET /admin/init (24 ms) 200
- 0|strapi | [2024-08-24 16:29:08.461] http: GET /admin/users/me (55 ms) 200
- 0|strapi | [2024-08-24 16:29:08.658] http: GET /admin/init (8 ms) 200
- 0|strapi | [2024-08-24 16:29:08.720] http: GET /admin/telemetry-properties (57 ms) 200
- 0|strapi | [2024-08-24 16:29:08.782] http: GET /admin/information (58 ms) 200
- 0|strapi | [2024-08-24 16:29:08.844] http: GET /admin/users/me/permissions (113 ms) 200
- 0|strapi | [2024-08-24 16:29:08.867] http: GET /admin/project-settings (87 ms) 200
- 0|strapi | [2024-08-24 16:29:19.459] http: POST /admin/login (245 ms) 200
- 0|strapi | [2024-08-24 16:29:19.876] http: GET /admin/users/me/permissions (142 ms) 200
- 0|strapi | [2024-08-24 16:29:19.887] http: GET /admin/information (161 ms) 200
- 0|strapi | [2024-08-24 16:29:19.929] http: GET /admin/project-settings (187 ms) 200
- 0|strapi | [2024-08-24 16:29:19.970] http: GET /admin/telemetry-properties (220 ms) 200
- 0|strapi | [2024-08-24 16:29:19.994] http: GET /admin/users/me (109 ms) 200
- 0|strapi | [2024-08-24 16:38:09.774] http: GET /api/tag-categories?populate=tags (55 ms) 200
- 0|strapi | [2024-08-24 16:38:09.880] http: GET /api/games?pagination[page]=1&pagination[pageSize]=25&populate=*&sort[0]=createdAt:desc (96 ms) 200
- 0|strapi | [2024-08-24 16:38:13.650] http: GET /api/games/178?populate=*,tags.tag_category,authors,Image,CYOA_pages (26 ms) 200
- 0|strapi | [2024-08-24 16:38:13.723] http: GET /api/comments/api::game.game:178?sort[createdAt]=desc&populate[0]=author&populate[1]=threadOf&populate[2]=children.author&populate[3]=children.children.author&populate[4]=children.children.children.author (18 ms) 200
- /etc/nginx/sites-available/cyoa.cafe
- server {
- listen 80;
- server_name cyoa.cafe www.cyoa.cafe;
- return 301 https://$server_name$request_uri;
- }
- server {
- listen 443 ssl http2;
- server_name cyoa.cafe www.cyoa.cafe;
- ssl_certificate /etc/letsencrypt/live/cyoa.cafe/fullchain.pem;
- ssl_certificate_key /etc/letsencrypt/live/cyoa.cafe/privkey.pem;
- include /etc/letsencrypt/options-ssl-nginx.conf;
- ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
- root /var/www/cyoa-cafe/frontend/dist;
- add_header X-Frame-Options "SAMEORIGIN";
- add_header X-XSS-Protection "1; mode=block";
- add_header X-Content-Type-Options "nosniff";
- location / {
- try_files $uri $uri/ /index.html;
- }
- location /uploads/ {
- alias /var/www/cyoa-cafe/backend/public/uploads/;
- add_header Cache-Control "public, max-age=31536000, immutable";
- }
- location /api/ {
- proxy_pass http://localhost:1337;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_cache_bypass $http_upgrade;
- }
- location /admin {
- proxy_pass http://localhost:1337/admin;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_cache_bypass $http_upgrade;
- }
- location /.well-known {
- alias /var/www/cyoa-cafe/backend/public/.well-known;
- }
- location ~ /admin/static/ {
- proxy_pass http://localhost:1337;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_set_header Host $host;
- proxy_cache_bypass $http_upgrade;
- expires 30d;
- add_header Cache-Control "public, max-age=2592000";
- }
- }
- sudo netstat -tulpn | grep LISTEN
- tcp 0 0 0.0.0.0:1337 0.0.0.0:* LISTEN 217663/node
- tcp 0 0 127.0.0.54:53 0.0.0.0:* LISTEN 22319/systemd-resol
- tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 143354/nginx: maste
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 143354/nginx: maste
- tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 22319/systemd-resol
- tcp6 0 0 :::22 :::* LISTEN 1/systemd
- npm list --depth=0
- [email protected] /var/www/cyoa-cafe/backend
- ├── @strapi/[email protected]
- ├── @strapi/[email protected]
- ├── @strapi/[email protected]
- ├── @strapi/[email protected]
- ├── @strapi/[email protected]
- env | grep -v -E "SECRET|KEY|PASSWORD"
- SHELL=/bin/bash
- PWD=/var/www/cyoa-cafe/backend
- LOGNAME=root
- XDG_SESSION_TYPE=tty
- HOME=/root
- LANG=en_US.UTF-8
- LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lz
- ma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*
- .war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*
- .pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:
- *.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=
- 00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00
- ;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:
- SSH_CONNECTION=(hidden now)
- LESSCLOSE=/usr/bin/lesspipe %s %s
- XDG_SESSION_CLASS=user
- TERM=xterm-256color
- LESSOPEN=| /usr/bin/lesspipe %s
- USER=root
- SHLVL=1
- XDG_SESSION_ID=399
- XDG_RUNTIME_DIR=/run/user/0
- SSH_CLIENT=38.180.135.59 51816 22
- XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
- DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
- SSH_TTY=/dev/pts/2
- OLDPWD=/var/www/cyoa-cafe/backend
- _=/usr/bin/env
- at /var/www/cyoa-cafe/backend/.env | grep -v -E "SECRET|KEY|PASSWORD"
- HOST=0.0.0.0
- PORT=1337
- API_TOKEN_SALT= (hidden now)
- TRANSFER_TOKEN_SALT= (hidden now)
- # Database
- DATABASE_CLIENT=sqlite
- DATABASE_FILENAME=.tmp/data.db
- # URL Configuration
- PUBLIC_URL=https://cyoa.cafe
- FRONTEND_URL=https://cyoa.cafe
- # CORS
- CORS_ORIGIN=https://cyoa.cafe,http://localhost:3000,http://localhost:5173
- # Environment
- NODE_ENV=production
- # Discord OAuth (if you're using it)
- DISCORD_CLIENT_ID= (hidden now)
- # Mail (update these for production)
- SMTP_HOST=localhost
- SMTP_PORT=1025
Add Comment
Please, Sign In to add comment