2023 New Server Deployment Log

📢 This article was translated by gemini-3-flash-preview

After moving my blog to GitHub, I didn’t plan on buying any more servers. Maybe it’s because things have been too quiet lately and I felt like tinkering, or maybe it’s that “I might not need it, but I must have it” mindset, but I ended up making an impulse purchase.

Current Websites (yexca.net domain)

Docker

Since discovering Docker, I try to deploy almost every project with it. It’s just too convenient.

Running Debian 10, logged in as root. First, update:

1
apt update

Install dependencies:

1
apt install curl gpg

Update GPG:

1
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Add Docker repo:

1
2
3
echo \
   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
   buster stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

Install Docker:

1
2
apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose

Start Docker:

1
2
systemctl enable docker
systemctl start docker

Test the installation:

1
docker run --rm hello-world

Reference: Server Docker Deployment Record

Public Key Login

Reference: SSH Public Key Login

Nginx

Using the nginx-ui project again, deployed via Docker. Configuration:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
version: '3.1' 
services: 
  nginx-ui:
    restart: always
    image: uozi/nginx-ui:latest
    container_name: nginx_UI
    volumes:
      - /home/nginx_ui/nginx:/etc/nginx
      - /home/nginx_ui/nginx-ui:/etc/nginx-ui
      - /home/nginx_ui/www:/www
    ports:
      - 80:80
      - 443:443

If you enable HTTPS at the DNS level, you don’t need to configure certificates; otherwise, you’ll run into access issues.

Personal Intro

I’ve had the idea for a personal landing page since before I moved my old server’s sites to Docker. I specifically changed my blog domain from yexca.xyz to blog.yexca.xyz just to free up the root domain. I didn’t expect it to take until this new server to actually start.

The domain yexca.xyz no longer belongs to me.

I checked my old project files—created March 2022, last modified June 2022. My procrastination is getting serious.

The idea came from seeing other bloggers’ intro pages, like https://idealclover.top/ , https://the.moe/ , and others. It’s been so long I can’t find all of them (and some have updated to look even cooler).

Some are open source where you just fill in your info to generate a page.

In the end, I chose to mimic the http://lolicon.app style. I forget exactly why (probably a decision from last year).


References:

Custom Scrollbar Styles with CSS

How to set favicon.ico for a website

A big reason for the impulse buy was wanting a decent music site for personal use. I previously had one based on OneDrive , but the experience in mainland China was poor. Since 115 was having a promotion, I went for it.

Post-experience: Never mind, it’s not even as fast as OneDrive. Impulse is the devil.

Sigh, I was even planning to deploy kikoeru-express if this worked well.

First, you need a version of Rclone that supports 115.

Project: https://github.com/gaoyb7/rclone-release

Usage is identical to the original Rclone, just with 115 support added.

Via Chrome DevTools

Log in to 115, open the Network tab, refresh, and find cookie.js?_=[number].

The Cookie is in the Request Headers.

Via Chrome Extension

Easier to view. Use: Get cookies.txt LOCALLY

Web cookies expire quickly. It’s better to capture the App’s request. Use Stream or Quantumult X on iOS, Packet Capture on Android, or Fiddler on PC.

It’s easy enough to grab, so I won’t detail it here.

Configuring Rclone

Via CLI or config file.

Via CLI

1
rclone.exe config

Follow the prompts. On Windows, the config is at:

1
C:\Users\%USERNAME%\AppData\Roaming\rclone

Via Config File

Create rclone.conf in the directory above with:

1
2
3
4
5
[name]
type = 115
uid = your_uid
cid = your_cid
seid = your_seid

Windows Mount Test

Requires winfsp (restart after install).

1
.\rclone.exe mount -v --read-only --vfs-read-chunk-size=4M --buffer-size=32M --network-mode 115: X:

Ctrl+C to unmount.

Linux Docker Mount

Pull image:

1
docker pull gaoyb7/rclone:latest

Mount:

1
2
3
4
5
6
7
8
9
docker run --rm \
    --volume /home/rclone/config:/config/rclone \
    --volume /home/rclone/data:/data:shared \
    --volume /etc/passwd:/etc/passwd:ro --volume /etc/group:/etc/group:ro \
    --device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined \
    gaoyb7/rclone:latest \
    mount 115:/music /data/music --allow-other --allow-non-empty --vfs-cache-mode writes &
# Only the last line is the Rclone command. Modify as needed:
rclone mount DriveName:Folder LocalFolder
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: "3.0"
services:
  navidrome:
    image: deluan/navidrome:latest
    ports:
      - "8005:4533"
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
      ND_LASTFM_ENABLED: "true"
      ND_LASTFM_APIKEY: your_LASTFM_APIKEY
      ND_LASTFM_SECRET: your_LASTFM_SECRET
      ND_LASTFM_LANGUAGE: zh
      ND_SPOTIFY_ID: your_SPOTIFY_ID
      ND_SPOTIFY_SECRET: your_SPOTIFY_SECRET
      ND_ENABLESHARING: "true"
      ND_UILOGINBACKGROUNDURL: "https://www.loliapi.com/acg" # Random image API
      ND_UIWELCOMEMESSAGE: "Welcome to the UI"
    volumes:
      - "/home/navidrome/data:/data"
      - "/home/rclone/data/music:/music/115:ro"
      - "/home/navidrome/music:/music/server:ro"

Blog

Two blogs, both deployed following my previous articles. I likely won’t update them much.

Wordpress

The image CDN I used for the old Wordpress blog is down. I tried some replacement plugins with no luck, so I stopped bothering (background images are good enough).

Typecho

I forgot the admin password for my VRChat Tutorial site since I haven’t used it in ages. Luckily, I had backup files, so I set up a new instance and imported the data. Same CDN issue as above; I’ll swap it out when I have time (only the cover is fixed for now).

WarmaTap

Fun web pages replacing Miku’s voice with Warma’s.

  • Electronic Style

Github: lwd-temp/warmatap

Live: http://yexca.net/warma_tap

  • Vocal Style

Github: MonianHello/WarmaTap

Live: http://yexca.net/warmatap

  • MikuTap

Github: HFIProgramming/mikutap

Live: http://yexca.net/mikutap

MikuTap is inspired by patatap .

This post is licensed under CC BY-NC-SA 4.0 by the author.
Last updated on 2025-09-30 01:25 +0900