# 用 OneIndex 做了一个图床，基于 Docker 与 Nginx 反代

**URL:** <https://meta.appinn.net/t/topic/13975>\
**Category:** 青蛙的应用\
**Created:** [2020 年2 月 23 日 07:16 UTC](https://meta.appinn.net/t/topic/13975 "2020-02-23T07:16:39Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2020 年2 月 23 日 07:16 UTC](https://meta.appinn.net/t/topic/13975/1 "2020-02-23T07:16:39Z")

</div>

[https://one.appinn.com/](https://one.appinn.com/)

呃，有时候不方便传 gif 在论坛，或者网站，主要是…磁盘空间不足。然后就尝试用普遍流传的 OneIndex 做了一个图床。

[https://github.com/donwa/oneindex](https://github.com/donwa/oneindex)

踩坑实录，由于 VPS 被删，之前数据丢了，重建后顺便记录一下安装过程：

首先，你需要在 VPS 里安装 docker，可以参考下面这个教程：

> [@在 Ubuntu 里安装 Docker CE](https://meta.appinn.net/t/ubuntu-docker-ce/3284):
>
> 填坑第一步，先安装一个 Docker，CE 是面对开发者的免费版本，还有企业版 EE，足够啦。 基于 Ubuntu 的安装方法 内容来自 Docker 官方[教程](https://docs.docker.com/engine/install/ubuntu/)，适用于以下系统： Ubuntu Hirsute 21.04 Ubuntu Groovy 20.10 Ubuntu Focal 20.04 (LTS) Ubuntu Bionic 18.04 (LTS) Ubuntu Xenial 16.04 (LTS) 为避免意外，首先卸载可能存在的旧版程序： sudo apt-get remove docker docker-engine docker.io containerd runc 然后一步一步安装即可： sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/g…

## 安装并配置 OneIndex

### 目录结构

只需要创建 config 文件夹（文件夹内文件会自动创建）即可将配置持久化，重启 Docker 之类的都不怕数据丢失。

```auto
.
├── config
│ ├── base.php
│ └── token.php
└── docker-compose.yml

```

### Oneindex 的 docker-compose.yml 文件内容

注意自行修改路径部分（`/root/oneindex/config`）为你的 config 所在。

```auto
oneindex:
    image: setzero/oneindex
    ports:
        - 8080:80
    volumes:
        - /root/oneindex/config:/var/www/html/config
    environment:
        - REFRESH_TOKEN='0 * * * *'
        - REFRESH_CACHE='*/10 * * * *'

```

### 运行 Oneindex

`docker-compose up -d`

之后，即可用 IP:8080 访问并设置 Oneindex。

## 安装并配置 Nginx 反代

由于机器有其他容器在运行，所以有一个单独的 Nginx 专门负责整台机器的所有网页服务，只需要简单的配置下就行了，也顺便记录下。

### 目录结构

```auto
.
├── conf.d
│ └── one.conf
├── docker-compose.yml
├── nginx.conf
├── ssl
│ ├── appinn.crt
│ ├── appinn.csr
│ └── appinn.key
└── www
    └── www

```

说明下这个目录，conf.d 为 Nginx 配置文件夹，以后想加网站就直接向里面添加，然后重启 Nginx 即可。nginx.conf 为默认即可，但注意要包括 conf.d 目录，ssl 为安全证书文件夹，www 为网页文件目录，此例中无用，可不要。

#### 一个 nginx.conf 例子

```auto
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
    worker_connections 1024;
}
http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    access_log off;
    include /etc/nginx/conf.d/*.conf;
}

```

#### one.conf 例子

```auto
server {
    listen 443 ssl http2;
    server_name one.appinn.com;

    ssl_certificate /etc/nginx/ssl/appinn2019.crt;
    ssl_certificate_key /etc/nginx/ssl/appinn2019.key;

    location / {
        proxy_pass http://IP:8080;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

```

#### docker-compose.yml 内容

```auto
nginx:
    image: nginx:stable
    ports:
        - '443:443'
    volumes:
        - ./conf.d:/etc/nginx/conf.d
        - ./nginx.conf:/etc/nginx/nginx.conf
        - ./ssl:/etc/nginx/ssl
        - ./www/www:/var/www
    restart: always

```

运行：`docker-compose up -d`

#### Docker 容器内的 Nginx 重启方法：

修改配置文件后，需要重启 Nginx，容器内可使用下面的命令，但注意修改了 nginx.conf 需要重建容器：

`docker exec nginx_nginx_1 nginx -s reload`

其中 nginx\_nginx\_1 为容器名，可以使用 `docker ps` 命令看到。

碰到文件可使用 `docker logs nginx_nginx_1` 来查看日志。

### 效果

最终，就是这个效果： [https://one.appinn.com](https://one.appinn.com)

---

<div class="post-metadata">

作者： ![majorworld](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/majorworld/32/65755_2.png) [@majorworld](https://meta.appinn.net/u/majorworld)\
发布日期： [2020 年2 月 23 日 07:38 UTC](https://meta.appinn.net/t/topic/13975/2 "2020-02-23T07:38:52Z")

</div>

爱了，爱了

---

<div class="post-metadata">

作者： ![tim1103](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/tim1103/32/5592_2.png) [@tim1103](https://meta.appinn.net/u/tim1103)\
发布日期： [2020 年2 月 24 日 00:38 UTC](https://meta.appinn.net/t/topic/13975/3 "2020-02-24T00:38:05Z")

</div>

@Qingwa 实测,第五代iPad无法上传…  
又拿win7电脑做了测试:无法返回链接…

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2020 年3 月 15 日 07:00 UTC](https://meta.appinn.net/t/topic/13975/4 "2020-03-15T07:00:15Z")

</div>

更新了一下，加了配置方法。网络上的资料很散、很累…
