This commit is contained in:
2026-03-22 08:01:26 +08:00
commit 865b924dc3
15 changed files with 267 additions and 0 deletions

2
caddy/.env Normal file
View File

@@ -0,0 +1,2 @@
UID=1001
GID=1001

2
caddy/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
config/
data/

19
caddy/compose.yaml Normal file
View File

@@ -0,0 +1,19 @@
services:
caddy:
image: caddy:2.11
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./conf:/etc/caddy
- ./site:/srv
- ./data:/data
- ./config:/config
networks:
- eryfel-net
networks:
eryfel-net:
external: true

16
caddy/conf/Caddyfile Normal file
View File

@@ -0,0 +1,16 @@
eryfel.net {
root * /srv
file_server
}
www.eryfel.net {
redir https://eryfel.net{uri}
}
git.eryfel.net {
reverse_proxy gitea:3000
}
cal.eryfel.net {
reverse_proxy radicale:5232
}

BIN
caddy/site/beian.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

80
caddy/site/index.html Normal file
View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ery's Space</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background-color: #f8f9fa;
color: #2c3e50;
}
.container {
text-align: center;
padding: 2rem;
}
h1 { font-weight: 300; letter-spacing: 1px; }
.sub-text { color: #95a5a6; font-size: 0.9rem; }
/* 备案信息布局 */
.footer {
position: absolute;
bottom: 20px;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
gap: 5px; /* 两行之间的间距 */
}
.line {
display: flex;
align-items: center;
justify-content: center;
height: 20px; /* 固定高度确保对齐 */
}
.beian-link {
text-decoration: none;
color: #bdc3c7;
font-size: 12px;
transition: color 0.2s;
}
.beian-link:hover {
color: #3498db;
}
.beian-icon {
width: 14px;
height: 14px;
margin-right: 4px;
/* 图片与文字中轴线对齐的关键 */
display: block;
}
</style>
</head>
<body>
<div class="container">
<h1>Welcome</h1>
<p class="sub-text">Ery's Technical Space</p>
</div>
<footer class="footer">
<div class="line">
<a href="https://beian.miit.gov.cn/" target="_blank" class="beian-link">蜀ICP备2026009904号-1</a>
</div>
<div class="line">
<img src="beian.png" class="beian-icon" alt="公安备案图标"/>
<a href="https://beian.mps.gov.cn/#/query/webSearch?code=51015602001641" rel="noreferrer" target="_blank" class="beian-link">川公网安备51015602001641号</a>
</div>
</footer>
</body>
</html>

2
gitea/.env Normal file
View File

@@ -0,0 +1,2 @@
UID=1001
GID=1001

1
gitea/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
data/

15
gitea/compose.yaml Normal file
View File

@@ -0,0 +1,15 @@
services:
gitea:
image: docker.gitea.com/gitea:1.25.5-rootless
restart: always
userns_mode: "keep-id"
user: "${UID}:${GID}"
volumes:
- ./data:/var/lib/gitea:Z,U
- ./config:/etc/gitea:Z,U
networks:
- eryfel-net
networks:
eryfel-net:
external: true

98
gitea/config/app.ini Normal file
View File

@@ -0,0 +1,98 @@
APP_NAME = Ery's Gitea
RUN_USER = git
RUN_MODE = prod
WORK_PATH = /var/lib/gitea
[repository]
ROOT = /var/lib/gitea/git/repositories
[repository.local]
LOCAL_COPY_PATH = /tmp/gitea/local-repo
[repository.upload]
TEMP_PATH = /tmp/gitea/uploads
[server]
APP_DATA_PATH = /var/lib/gitea
SSH_DOMAIN = git.eryfel.net
HTTP_PORT = 3000
ROOT_URL = https://git.eryfel.net/
DISABLE_SSH = false
; In rootless gitea container only internal ssh server is supported
START_SSH_SERVER = true
SSH_PORT = 2222
SSH_LISTEN_PORT = 2222
BUILTIN_SSH_SERVER_USER = git
LFS_START_SERVER = true
DOMAIN = git.eryfel.net
LFS_JWT_SECRET = gwue1pMh4qIbeBjwUEyB13wtQ0cFHX2t22VNMTcVoB0
OFFLINE_MODE = true
[database]
PATH = /var/lib/gitea/data/gitea.db
DB_TYPE = sqlite3
HOST = localhost:3306
NAME = gitea
USER = root
PASSWD =
SCHEMA =
SSL_MODE = disable
LOG_SQL = false
[session]
PROVIDER_CONFIG = /var/lib/gitea/data/sessions
PROVIDER = file
[picture]
AVATAR_UPLOAD_PATH = /var/lib/gitea/data/avatars
REPOSITORY_AVATAR_UPLOAD_PATH = /var/lib/gitea/data/repo-avatars
[attachment]
PATH = /var/lib/gitea/data/attachments
[log]
ROOT_PATH = /var/lib/gitea/data/log
MODE = console
LEVEL = info
[security]
INSTALL_LOCK = true
SECRET_KEY =
REVERSE_PROXY_LIMIT = 1
REVERSE_PROXY_TRUSTED_PROXIES = *
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NzQxMzY5NTN9.0dX03FUC3EKjmRKcHpm0IH0bhD4wtk_KXLFQ3sNesgM
PASSWORD_HASH_ALGO = pbkdf2
[service]
DISABLE_REGISTRATION = false
REQUIRE_SIGNIN_VIEW = false
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost
[lfs]
PATH = /var/lib/gitea/git/lfs
[mailer]
ENABLED = false
[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true
[cron.update_checker]
ENABLED = false
[repository.pull-request]
DEFAULT_MERGE_STYLE = merge
[repository.signing]
DEFAULT_TRUST_MODEL = committer
[oauth2]
JWT_SECRET = RaSq6k_MmyVNrPAaHFk83lCPtDfH2e3bIUCmyJ7Vup0

2
radicale/.env Normal file
View File

@@ -0,0 +1,2 @@
UID=1001
GID=1001

1
radicale/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
data/

18
radicale/compose.yaml Normal file
View File

@@ -0,0 +1,18 @@
services:
radicale:
image: ghcr.io/kozea/radicale:stable
restart: unless-stopped
userns_mode: "keep-id"
user: "${UID}:${GID}"
ports:
- 5232:5232
volumes:
- ./config:/etc/radicale
- ./data:/var/lib/radicale:U
networks:
- eryfel-net
networks:
eryfel-net:
external: true

10
radicale/config/config Normal file
View File

@@ -0,0 +1,10 @@
[server]
hosts = 0.0.0.0:5232
[auth]
type = htpasswd
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = bcrypt
[storage]
filesystem_folder = /var/lib/radicale/collections

1
radicale/config/users Normal file
View File

@@ -0,0 +1 @@
ery:$2y$05$AdVdFlCV2R9/EaHO85dxYuWQKBMhso9siK5lCtuMbP/szoiXhT5X6