logo
0
0
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%