yagamil 发表于 2024-12-23 20:24:05

goImage:一个白嫖telegram的轻量级图床

项目已开源,https://github.com/nodeseeker/goImage,目前仍处于测试阶段,可能存在未知问题,欢迎提交 Issue。

## goImage 图床

基于 Go 语言开发的图片托管服务,使用 Telegram 作为存储后端。

### 功能特性

- 无限容量,上传图片到 Telegram 频道
- 轻量级要求,内存占用小于 10MB
- 支持管理员登录,查看记录和删除图片

### 页面展示

首页支持点击或拖拽上传图片。

![首页](https://github.com/nodeseeker/goImage/blob/main/images/index.png?raw=true)

上传进度展示和后台处理显示。

![进度](https://github.com/nodeseeker/goImage/blob/main/images/home.png?raw=true)

登录页面,输入用户名和密码登录。

![登录](https://github.com/nodeseeker/goImage/blob/main/images/login.png?raw=true)

管理页面,查看访问统计和删除图片。注意:删除操作为禁止访问图片,数据依旧存留在telegram频道中。

![管理](https://github.com/nodeseeker/goImage/blob/main/images/admin.png?raw=true)

### 前置准备

1. Telegram 准备工作:
   - 创建 Telegram Bot(通过 @BotFather)
   - 记录获取的 Bot Token
   - 创建一个频道用于存储图片
   - 将 Bot 添加为频道管理员
   - 获取频道的 Chat ID(可通过 @getidsbot 获取)
2. 系统要求:
   - 使用 Systemd 的 Linux 系统
   - 已安装并配置 Nginx
   - 域名已配置 SSL 证书(必需)

### 安装步骤

1. 创建服务目录:

```bash
sudo mkdir -p /opt/imagehosting
cd /opt/imagehosting
```

1. 下载并解压程序:
   从 (https://github.com/nodeseeker/goImage/releases) 下载最新版本并解压到 `/opt/imagehosting` 目录。

```bash
unzip goImage.zip
```

解压后的目录结构:

```
/opt/imagehosting/imagehosting # 程序文件
/opt/imagehosting/config.json # 配置文件
/opt/imagehosting/static/favicon.ico # 网站图标
/opt/imagehosting/static/robots.txt # 爬虫协议
/opt/imagehosting/templates/home.html # 首页模板
/opt/imagehosting/templates/login.html # 登录模板
/opt/imagehosting/templates/upload.html # 上传模板
/opt/imagehosting/templates/admin.html # 管理模板
```

1. 设置权限:

```bash
sudo chown -R root:root /opt/imagehosting
sudo chmod 755 /opt/imagehosting/imagehosting
```

### 配置说明

#### 1. 程序配置文件

编辑 `/opt/imagehosting/config.json`,示例如下:

```json
{
    "telegram": {
      "token": "1234567890:ABCDEFG_ab1-asdfghjkl12345",
      "chatId": -123456789
    },
    "admin": {
      "username": "nodeseeker",
      "password": "nodeseeker@123456"
    },
    "site": {
      "name": "NodeSeek",
      "maxFileSize": 10,
      "port": 18080,
      "host": "127.0.0.1"
    }
}
```

详细的说明如下:

- `telegram.token`:电报机器人的Bot Token
- `telegram.chatId`:频道的Chat ID
- `admin.username`:网站管理员用户名
- `admin.password`:网站管理员密码
- `site.name`:网站名称
- `site.maxFileSize`:最大上传文件大小(单位:MB),建议10MB
- `site.port`:服务端口,默认18080
- `site.host`:服务监听地址,默认127.0.0.0本地监听;如果需要调试或外网访问,可修改为0.0.0.0

#### 2. Systemd 服务配置

创建服务文件:

```bash
sudo vim /etc/systemd/system/imagehosting.service
```

服务文件内容:

```ini

Description=Image Hosting Service
After=network.target
StartLimitIntervalSec=0


Type=simple
Restart=always
RestartSec=5
User=root
WorkingDirectory=/opt/imagehosting
ExecStart=/opt/imagehosting/imagehosting


WantedBy=multi-user.target
```

#### 3. Nginx 配置

在你的网站配置文件中添加:

```nginx
server {
    listen 443 ssl;
    server_name your-domain.com; # 填写你的域名
   
    # SSL 配置部分
    ssl_certificate /path/to/cert.pem; # 填写你的 SSL 证书路径,以实际为准
    ssl_certificate_key /path/to/key.pem; # 填写你的 SSL 证书密钥路径,以实际为准
   
    location / {
      proxy_pass http://127.0.0.1:18080;
      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;
      client_max_body_size 50m; # 限制上传文件大小,必须大于程序配置的最大文件大小
    }
}
```

### 启动和维护

1. 启动服务:

```bash
sudo systemctl daemon-reload # 重新加载配置,仅首次安装时执行
sudo systemctl enable imagehosting # 设置开机自启
sudo systemctl start imagehosting # 启动服务
sudo systemctl restart imagehosting # 重启服务
sudo systemctl status imagehosting # 查看服务状态
sudo systemctl stop imagehosting # 停止服务
```

1. 检查日志:

```bash
sudo journalctl -u imagehosting -f # 查看服务日志
```

### 常见问题

1. 上传失败:
   - 检查 Bot Token 是否正确
   - 确认 Bot 是否具有频道管理员权限
   - 验证 SSL 证书是否正确配置
2. 无法访问管理界面:
   - 确认配置文件中的管理员账号密码正确
   - 检查服务是否正常运行
   - 查看服务日志排查问题
3. 上传文件大小限制:
   - 修改 Nginx 配置中的 `client_max_body_size` 参数
   - 修改程序配置文件中的 `site.maxFileSize` 参数
4. 已知bug:
   - 登录时,输入错误的用户名或密码将提示`Invalid credentials`,需要在新标签页再次打开登录页面.直接在原先标签页刷新,将一直报错`Invalid credentials`。
页: [1]
查看完整版本: goImage:一个白嫖telegram的轻量级图床