logo
0
0
WeChat Login

老陈传送门 🚀

一个基于Go语言开发的网站随机跳转系统,让用户可以随机访问已审核的网站,同时支持网站申请加入和管理员审核功能。

功能特性

用户功能

  • 🚀 随机传送: 随机跳转到已审核通过的网站,带有3秒倒计时
  • 📝 申请加入: 用户可以提交自己的网站申请加入传送门
  • 🎨 现代化UI: 响应式设计,支持移动端访问

管理员功能

  • 🔐 安全登录: 管理员登录系统
  • 📊 数据统计: 网站数量统计和状态概览
  • 网站审核: 审核用户提交的网站申请
  • 🌐 网站管理: 添加、编辑、删除网站
  • 📋 分页浏览: 支持分页查看所有网站

系统功能

  • 🛠️ 自动初始化: 首次访问自动引导系统初始化
  • 🗄️ 数据库管理: 自动创建数据库表结构
  • 🔒 会话管理: 安全的管理员会话控制

技术栈

  • 后端: Go 1.21+
  • Web框架: Gin
  • 数据库: MySQL
  • ORM: GORM
  • 前端: HTML5 + CSS3 + JavaScript
  • 会话管理: gin-sessions

项目结构

老陈传送门/
├── main.go                 # 主程序入口
├── go.mod                  # Go模块文件
├── config/
│   └── config.go          # 配置管理
├── database/
│   └── db.go              # 数据库连接
├── models/
│   ├── website.go         # 网站模型
│   └── admin.go           # 管理员模型
├── handlers/
│   ├── home.go            # 首页处理
│   ├── teleport.go        # 传送功能
│   ├── apply.go           # 申请功能
│   └── admin.go           # 管理员功能
├── templates/
│   ├── index.html         # 首页模板
│   ├── teleport.html      # 传送页面
│   ├── apply.html         # 申请页面
│   ├── init.html          # 初始化页面
│   └── admin/
│       ├── login.html     # 管理员登录
│       ├── dashboard.html # 管理后台
│       ├── websites.html  # 网站管理
│       └── add_website.html # 添加网站
└── README.md

环境要求

  • Go 1.21 或更高版本
  • MySQL 5.7 或更高版本
  • Linux/Windows 服务器

快速开始

🐳 Docker 一键部署(推荐)

最简单的部署方式,类似 Alist 的一键部署体验:

# 克隆项目
git clone https://cnb.cool/FlashingChen/CSM.git
cd CSM

# Linux/macOS 一键启动
chmod +x docker-start.sh
./docker-start.sh start

# Windows 一键启动
docker-start.bat start

访问地址: http://localhost:8080

📖 详细的 Docker 部署说明请查看 DOCKER_DEPLOY.md

📦 传统部署方式

1. 克隆项目

git clone https://cnb.cool/FlashingChen/CSM.git
cd CSM

2. 配置Go代理(国内服务器必需)

如果是国内服务器,由于网络限制需要先配置Go代理:

# 配置Go代理
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.google.cn

3. 安装依赖

go mod tidy

4. 配置数据库

创建MySQL数据库:

CREATE DATABASE teleport_portal CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

5. 配置环境变量(可选)

创建 .env 文件或设置环境变量:

export DB_HOST=localhost
export DB_PORT=3306
export DB_USER=root
export DB_PASSWORD=your_password
export DB_NAME=teleport_portal
export SERVER_PORT=8080

6. 运行程序

go run main.go

7. 访问系统

打开浏览器访问 http://localhost:8080,首次访问会自动跳转到初始化页面。

部署指南

宝塔面板部署

1. 服务器准备

确保服务器已安装:

  • 宝塔面板
  • MySQL 数据库
  • Go 环境

2. 上传代码

将代码上传到网站目录:/www/wwwroot/go.chenyuxia.com

# 进入网站目录
cd /www/wwwroot/go.chenyuxia.com

# 克隆代码
git clone https://cnb.cool/FlashingChen/CSM.git .

# 配置Go代理(国内服务器必需)
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.google.cn

# 安装依赖
go mod tidy

3. 配置数据库

在宝塔面板中创建数据库:

  • 数据库名:teleport_portal
  • 字符集:utf8mb4

4. 编译程序

# 编译为可执行文件
go build -o teleport-portal main.go

# 设置执行权限
chmod +x teleport-portal

5. 配置系统服务

创建systemd服务文件:

sudo nano /etc/systemd/system/teleport-portal.service

添加以下内容:

[Unit]
Description=Teleport Portal Service
After=network.target mysql.service

[Service]
Type=simple
User=www
WorkingDirectory=/www/wwwroot/go.chenyuxia.com
ExecStart=/www/wwwroot/go.chenyuxia.com/teleport-portal
Restart=always
RestartSec=5
Environment=DB_HOST=localhost
Environment=DB_PORT=3306
Environment=DB_USER=your_db_user
Environment=DB_PASSWORD=your_db_password
Environment=DB_NAME=teleport_portal
Environment=SERVER_PORT=8080

[Install]
WantedBy=multi-user.target

6. 启动服务

# 重新加载systemd
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start teleport-portal

# 设置开机自启
sudo systemctl enable teleport-portal

# 查看服务状态
sudo systemctl status teleport-portal

7. 配置反向代理

在宝塔面板中配置Nginx反向代理:

location / {
    proxy_pass http://127.0.0.1:8080;
    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;
}

8. 配置防火墙

# 开放8080端口(如果需要)
sudo ufw allow 8080

# 或者在宝塔面板的安全设置中添加端口

使用说明

系统初始化

  1. 首次访问系统会自动跳转到初始化页面
  2. 设置管理员用户名和密码
  3. 完成初始化后即可正常使用

用户操作

  1. 随机传送: 点击"开始传送"按钮,系统会随机选择一个网站并倒计时跳转
  2. 申请加入: 点击"申请加入"按钮,填写网站信息提交申请

管理员操作

  1. 访问 /admin 进入管理后台
  2. 使用初始化时设置的账号密码登录
  3. 在仪表板查看系统统计信息
  4. 在网站管理页面审核用户申请
  5. 可以手动添加网站

常见问题

Q: 数据库连接失败

A: 检查数据库配置信息,确保MySQL服务正常运行,数据库已创建。

Q: 端口被占用

A: 修改环境变量 SERVER_PORT 或在代码中修改端口号。

Q: 权限问题

A: 确保程序有读写权限,特别是在Linux系统中。

Q: 服务无法启动

A: 检查systemd服务配置,查看日志:sudo journalctl -u teleport-portal -f

更新日志

v1.0.0 (2024-01-XX)

  • 🎉 初始版本发布
  • ✨ 实现基本的传送和申请功能
  • 🔐 添加管理员系统
  • 📱 响应式设计支持

贡献指南

欢迎提交Issue和Pull Request来改进项目!

许可证

MIT License

联系方式

如有问题或建议,请通过以下方式联系:


老陈传送门 - 让互联网的探索更有趣! 🚀

About

No description, topics, or website provided.
Language
HTML39.9%
Markdown25%
Go15.3%
Shell9%
Others10.8%