Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ KV_REST_API_TOKEN=
DATABASE_URL=

BETTER_AUTH_SECRET=
BETTER_AUTH_URL=
BETTER_AUTH_URL="https://vercount.one" # 默认情况下,直接使用官方服务器的服务

GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,14 @@ Vercount 旨在解决这些问题,让网站计数器更快、更稳定、更

最终解释权归 EvanNotFound 所有。

## 自托管
## 自托管(部署到vercel)

Coming soon...
1. fork本仓库
2. 补全环境变量

- `GITHUB_CLIENT_ID` 和 `GITHUB_CLIENT_SECRET`:https://github.com/settings/developers
- `DATABASE_URL`:https://console.neon.tech/app/projects/create
- `KV_REST_API_URL` 和 `KV_REST_API_TOKEN`:https://console.upstash.com/redis/create
- `BETTER_AUTH_URL`: https://项目名.vercel.app

3. 部署项目
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "terser ./src/lib/client.js -o ./public/js/client.min.js --compress --timings --mangle --toplevel && next dev --turbopack",
"build": "terser ./src/lib/client.js -o ./public/js/client.min.js --compress --timings --mangle --toplevel && next build",
"dev": "node ./scripts/build-client.js && terser ./src/lib/client.build.js -o ./public/js/client.min.js --compress --timings --mangle --toplevel && next dev --turbopack",
"build": "node ./scripts/build-client.js && terser ./src/lib/client.build.js -o ./public/js/client.min.js --compress --timings --mangle --toplevel && next build",
"start": "terser ./src/lib/client.js -o ./public/js/client.min.js --compress --timings --mangle --toplevel && next start",
"lint": "next lint",
"db:generate": "npx drizzle-kit generate",
Expand Down
1 change: 0 additions & 1 deletion public/js/client.min.js

This file was deleted.

33 changes: 33 additions & 0 deletions scripts/build-client.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');

// Get base URL from env
const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || process.env.BETTER_AUTH_URL || '';

// Only replace if baseUrl is set and NOT vercount.one
const shouldReplace = baseUrl && !baseUrl.includes('vercount.one');

const clientSrc = path.resolve(__dirname, '../src/lib/client.js');
const clientTmp = path.resolve(__dirname, '../src/lib/client.build.js');

if (shouldReplace) {
let origin = baseUrl;
try {
origin = new URL(baseUrl).origin;
} catch (e) {
origin = baseUrl.replace(/\/$/, '');
}

console.log(`[build-client] Using custom domain: ${origin}`);

// Create temporary build version of client.js
let clientContent = fs.readFileSync(clientSrc, 'utf8');
clientContent = clientContent.replace(/https:\/\/events\.vercount\.one/g, origin);
fs.writeFileSync(clientTmp, clientContent, 'utf8');
} else {
console.log('[build-client] Using default: vercount.one');
// Just copy original
fs.copyFileSync(clientSrc, clientTmp);
}

2 changes: 2 additions & 0 deletions src/env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ export const env = createEnv({
KV_REST_API_TOKEN: z.string(),
},
client: {
NEXT_PUBLIC_BASE_URL: z.string().url().optional(),
},

// only for client env variables
experimental__runtimeEnv: {
NEXT_PUBLIC_BASE_URL: process.env.NEXT_PUBLIC_BASE_URL,
}
});