[GH-ISSUE #10] 在PaaS平台部署docker镜像失败 #9

Closed
opened 2026-02-27 01:55:13 +03:00 by kerem · 22 comments
Owner

Originally created by @yutian81 on GitHub (Sep 11, 2024).
Original GitHub issue: https://github.com/electerm/electerm-web-docker/issues/10

我在 https://app.northflank.com/ 这个PaaS平台,通过拉取镜像的方式部署失败

镜像地址:https://hub.docker.com/r/zxdong262/electerm-web

错误信息为:
image

按照文档,端口设置为 8082
image

是否还有其他必须设置的环境变量?

大佬能帮我看看是什么原因吗?

补充一下,部署日志正常,全文如下:

2024-09-11T05:09:46.342909937Z stdout F [2024-09-11T05:09:46Z INFO ] Securely fetching environment variables...
2024-09-11T05:09:46.342944502Z stdout F [2024-09-11T05:09:46Z INFO ] Successfully fetched environment variables.
2024-09-11T05:09:46.342950733Z stdout F [2024-09-11T05:09:46Z INFO ] Starting container entrypoint...
2024-09-11T05:09:52.698361805Z stdout F 05:09:52 info › app start
2024-09-11T05:09:52.713855521Z stdout F 05:09:52 info › server runs on http://127.0.0.1:5577
2024-09-11T05:16:46.880966157Z stdout F [2024-09-11T05:16:46Z INFO ] Process terminated.
2024-09-11T05:16:46.222485661Z stdout F [2024-09-11T05:16:46Z INFO ] Securely fetching environment variables...
2024-09-11T05:16:46.222514716Z stdout F [2024-09-11T05:16:46Z INFO ] Successfully fetched environment variables.
2024-09-11T05:16:46.222531157Z stdout F [2024-09-11T05:16:46Z INFO ] Starting container entrypoint...
2024-09-11T05:16:52.656659031Z stdout F 05:16:52 info › app start
2024-09-11T05:16:52.745636842Z stdout F 05:16:52 info › server runs on http://127.0.0.1:5577/
2024-09-11T05:20:25.700894914Z stdout F [2024-09-11T05:20:25Z INFO ] Securely fetching environment variables...
2024-09-11T05:20:25.700928498Z stdout F [2024-09-11T05:20:25Z INFO ] Successfully fetched environment variables.
2024-09-11T05:20:25.700934439Z stdout F [2024-09-11T05:20:25Z INFO ] Starting container entrypoint...
2024-09-11T05:20:26.327391515Z stdout F [2024-09-11T05:20:26Z INFO ] Process terminated.
2024-09-11T05:20:33.949752361Z stdout F 05:20:33 info › app start
2024-09-11T05:20:33.965461738Z stdout F 05:20:33 info › server runs on http://127.0.0.1:5577
Originally created by @yutian81 on GitHub (Sep 11, 2024). Original GitHub issue: https://github.com/electerm/electerm-web-docker/issues/10 我在 https://app.northflank.com/ 这个PaaS平台,通过拉取镜像的方式部署失败 镜像地址:https://hub.docker.com/r/zxdong262/electerm-web 错误信息为: ![image](https://github.com/user-attachments/assets/e095c403-0b82-4b25-9718-bb4e3cd3a0d9) 按照文档,端口设置为 8082 ![image](https://github.com/user-attachments/assets/7122bb6f-a515-4291-bec4-b0b7cc383000) 是否还有其他必须设置的环境变量? 大佬能帮我看看是什么原因吗? 补充一下,部署日志正常,全文如下: ``` 2024-09-11T05:09:46.342909937Z stdout F [2024-09-11T05:09:46Z INFO ] Securely fetching environment variables... 2024-09-11T05:09:46.342944502Z stdout F [2024-09-11T05:09:46Z INFO ] Successfully fetched environment variables. 2024-09-11T05:09:46.342950733Z stdout F [2024-09-11T05:09:46Z INFO ] Starting container entrypoint... 2024-09-11T05:09:52.698361805Z stdout F 05:09:52 info › app start 2024-09-11T05:09:52.713855521Z stdout F 05:09:52 info › server runs on http://127.0.0.1:5577 2024-09-11T05:16:46.880966157Z stdout F [2024-09-11T05:16:46Z INFO ] Process terminated. 2024-09-11T05:16:46.222485661Z stdout F [2024-09-11T05:16:46Z INFO ] Securely fetching environment variables... 2024-09-11T05:16:46.222514716Z stdout F [2024-09-11T05:16:46Z INFO ] Successfully fetched environment variables. 2024-09-11T05:16:46.222531157Z stdout F [2024-09-11T05:16:46Z INFO ] Starting container entrypoint... 2024-09-11T05:16:52.656659031Z stdout F 05:16:52 info › app start 2024-09-11T05:16:52.745636842Z stdout F 05:16:52 info › server runs on http://127.0.0.1:5577/ 2024-09-11T05:20:25.700894914Z stdout F [2024-09-11T05:20:25Z INFO ] Securely fetching environment variables... 2024-09-11T05:20:25.700928498Z stdout F [2024-09-11T05:20:25Z INFO ] Successfully fetched environment variables. 2024-09-11T05:20:25.700934439Z stdout F [2024-09-11T05:20:25Z INFO ] Starting container entrypoint... 2024-09-11T05:20:26.327391515Z stdout F [2024-09-11T05:20:26Z INFO ] Process terminated. 2024-09-11T05:20:33.949752361Z stdout F 05:20:33 info › app start 2024-09-11T05:20:33.965461738Z stdout F 05:20:33 info › server runs on http://127.0.0.1:5577 ```
kerem closed this issue 2026-02-27 01:55:14 +03:00
Author
Owner

@zxdong262 commented on GitHub (Sep 11, 2024):

应该是SERVER变量要设为那个对外的地址xxx.code.run,等我试试

<!-- gh-comment-id:2342793498 --> @zxdong262 commented on GitHub (Sep 11, 2024): 应该是SERVER变量要设为那个对外的地址xxx.code.run,等我试试
Author
Owner

@zxdong262 commented on GitHub (Sep 11, 2024):

我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577
然后设定几个环境变量(xxxx换成你的地址)

SERVER=https://xxxx.code.run
HOST=0.0.0.0
DB_PATH=/dist-external/db
<!-- gh-comment-id:2343079495 --> @zxdong262 commented on GitHub (Sep 11, 2024): 我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577 然后设定几个环境变量(xxxx换成你的地址) ``` SERVER=https://xxxx.code.run HOST=0.0.0.0 DB_PATH=/dist-external/db ```
Author
Owner

@zxdong262 commented on GitHub (Sep 11, 2024):

但是好像有网络限制?我试了连不上外部ssh

<!-- gh-comment-id:2343097556 --> @zxdong262 commented on GitHub (Sep 11, 2024): 但是好像有网络限制?我试了连不上外部ssh
Author
Owner

@yutian81 commented on GitHub (Sep 11, 2024):

我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577 然后设定几个环境变量(xxxx换成你的地址)

SERVER=https://xxxx.code.run
HOST=0.0.0.0
DB_PATH=/dist-external/db

我再试试看。不至于啊,我之前用这个容器搭了一个简易的webssh服务,是可以连外部ssh的

<!-- gh-comment-id:2343307016 --> @yutian81 commented on GitHub (Sep 11, 2024): > 我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577 然后设定几个环境变量(xxxx换成你的地址) > > ``` > SERVER=https://xxxx.code.run > HOST=0.0.0.0 > DB_PATH=/dist-external/db > ``` 我再试试看。不至于啊,我之前用这个容器搭了一个简易的webssh服务,是可以连外部ssh的
Author
Owner

@yutian81 commented on GitHub (Sep 11, 2024):

我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577

这一步是怎么操作的,请指教

<!-- gh-comment-id:2343325992 --> @yutian81 commented on GitHub (Sep 11, 2024): > 我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577 这一步是怎么操作的,请指教
Author
Owner

@zxdong262 commented on GitHub (Sep 11, 2024):

我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577

这一步是怎么操作的,请指教

volumes设置里

<!-- gh-comment-id:2343328276 --> @zxdong262 commented on GitHub (Sep 11, 2024): > > 我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577 > > 这一步是怎么操作的,请指教 volumes设置里
Author
Owner

@yutian81 commented on GitHub (Sep 11, 2024):

我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577

这一步是怎么操作的,请指教

volumes设置里

看到了 谢谢

<!-- gh-comment-id:2343334713 --> @yutian81 commented on GitHub (Sep 11, 2024): > > > 我试了,可以,我是先挂了一个盘,/dist-external,端口设为5577 > > > > > > 这一步是怎么操作的,请指教 > > volumes设置里 看到了 谢谢
Author
Owner

@yutian81 commented on GitHub (Sep 11, 2024):

还有个问题请教下,挂载盘这一步我做了,5277端口在哪里设置?是在这里吗?

image

这里不应该是8082?

<!-- gh-comment-id:2343341321 --> @yutian81 commented on GitHub (Sep 11, 2024): 还有个问题请教下,挂载盘这一步我做了,5277端口在哪里设置?是在这里吗? ![image](https://github.com/user-attachments/assets/8f8762d1-250e-4e33-a7b2-37bb53ad273c) 这里不应该是8082?
Author
Owner

@zxdong262 commented on GitHub (Sep 11, 2024):

还有个问题请教下,挂载盘这一步我做了,5277端口在哪里设置?是在这里吗?

image

这里不应该是8082?

设为5577

<!-- gh-comment-id:2343376771 --> @zxdong262 commented on GitHub (Sep 11, 2024): > 还有个问题请教下,挂载盘这一步我做了,5277端口在哪里设置?是在这里吗? > > ![image](https://private-user-images.githubusercontent.com/165384851/366429969-8f8762d1-250e-4e33-a7b2-37bb53ad273c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYwNTQ1MDcsIm5iZiI6MTcyNjA1NDIwNywicGF0aCI6Ii8xNjUzODQ4NTEvMzY2NDI5OTY5LThmODc2MmQxLTI1MGUtNGUzMy1hN2IyLTM3YmI1M2FkMjczYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkxMVQxMTMwMDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mNzY2MzFjMjg5NWQ3OTA5NTlkOWM2ZTYwNTA2NzRiNTZlZDgyMzhiYWM1YzFlMjIxZDg5YWY3ZDA3YTBiZTgyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.Z65EC_rtY8ieuyjiWMS5OutJkprm1XksQhUu9fR5o1Q) > > 这里不应该是8082? 设为5577
Author
Owner

@yutian81 commented on GitHub (Sep 12, 2024):

非常感谢,已部署成功,并成功连上vps

<!-- gh-comment-id:2345967489 --> @yutian81 commented on GitHub (Sep 12, 2024): 非常感谢,已部署成功,并成功连上vps
Author
Owner

@zxdong262 commented on GitHub (Sep 12, 2024):

非常感谢,已部署成功,并成功连上vps

请问怎么设置访问网络权限的?是付费用户吗?

<!-- gh-comment-id:2346007558 --> @zxdong262 commented on GitHub (Sep 12, 2024): > 非常感谢,已部署成功,并成功连上vps 请问怎么设置访问网络权限的?是付费用户吗?
Author
Owner

@yutian81 commented on GitHub (Sep 12, 2024):

非常感谢,已部署成功,并成功连上vps

请问怎么设置访问网络权限的?是付费用户吗?

我是免费用户啊,我没有做任何其他设置,通过nf分配的域名就可以访问web版并连接ssh。
但是依然有两个问题: 1.我使用自定义域名(在CF托管)无法访问,这应该是nf的问题。2.web版无法保存任何设置,比如我设置语言为中文,刷新浏览器后依然变成英文,服务器登录信息也保存不了,数据读取好像没有指向额外挂载的磁盘

<!-- gh-comment-id:2346250994 --> @yutian81 commented on GitHub (Sep 12, 2024): > > 非常感谢,已部署成功,并成功连上vps > > 请问怎么设置访问网络权限的?是付费用户吗? 我是免费用户啊,我没有做任何其他设置,通过nf分配的域名就可以访问web版并连接ssh。 但是依然有两个问题: 1.我使用自定义域名(在CF托管)无法访问,这应该是nf的问题。2.web版无法保存任何设置,比如我设置语言为中文,刷新浏览器后依然变成英文,服务器登录信息也保存不了,数据读取好像没有指向额外挂载的磁盘
Author
Owner

@yutian81 commented on GitHub (Sep 12, 2024):

哦,我就加了一个地方的设置,健康检查,检查路径为/,检查端口为5577。这应该跟网络没啥关系吧。

<!-- gh-comment-id:2346261020 --> @yutian81 commented on GitHub (Sep 12, 2024): 哦,我就加了一个地方的设置,健康检查,检查路径为/,检查端口为5577。这应该跟网络没啥关系吧。
Author
Owner

@yutian81 commented on GitHub (Sep 12, 2024):

https://et-out--electerm--sykk8bwr425w.code.run

这是我部署出来的,平台分配的地址,完全正常,除了不能保存设置

https://webssh.yzong.us.kg

这是我的自定义域,就只显示一个logo,无法进入操作界面

<!-- gh-comment-id:2346272364 --> @yutian81 commented on GitHub (Sep 12, 2024): https://et-out--electerm--sykk8bwr425w.code.run 这是我部署出来的,平台分配的地址,完全正常,除了不能保存设置 https://webssh.yzong.us.kg 这是我的自定义域,就只显示一个logo,无法进入操作界面
Author
Owner

@yutian81 commented on GitHub (Sep 12, 2024):

非常感谢,已部署成功,并成功连上vps

请问怎么设置访问网络权限的?是付费用户吗?

玄学了,我今天下午部署好的时候,在电脑上用Chrome浏览器都是可以连ssh的。刚刚用手机连接试了一下,出现跟你同样的问题,没有网络权限,只能本地连接。这真是奇怪了。。。设置不能保存的问题,刚刚在手机上又可以保存了。。。太玄学了

等你进一步更新镜像版。。。期待

补充:应该是手机浏览器的问题。刚刚又测试了,电脑上chrome浏览器可以正常连接ssh,并且设置也可以保存了

<!-- gh-comment-id:2346309904 --> @yutian81 commented on GitHub (Sep 12, 2024): > > 非常感谢,已部署成功,并成功连上vps > > 请问怎么设置访问网络权限的?是付费用户吗? 玄学了,我今天下午部署好的时候,在电脑上用Chrome浏览器都是可以连ssh的。刚刚用手机连接试了一下,出现跟你同样的问题,没有网络权限,只能本地连接。这真是奇怪了。。。设置不能保存的问题,刚刚在手机上又可以保存了。。。太玄学了 等你进一步更新镜像版。。。期待 补充:应该是手机浏览器的问题。刚刚又测试了,电脑上chrome浏览器可以正常连接ssh,并且设置也可以保存了
Author
Owner

@zxdong262 commented on GitHub (Sep 13, 2024):

注意安全啊,如果在公开网络上使用,至少设置登录

SERVER_SECRET=some_server_secret
SERVER_PASS=password_to_login
ENABLE_AUTH=1 
<!-- gh-comment-id:2348811656 --> @zxdong262 commented on GitHub (Sep 13, 2024): 注意安全啊,如果在公开网络上使用,至少设置登录 ``` SERVER_SECRET=some_server_secret SERVER_PASS=password_to_login ENABLE_AUTH=1 ```
Author
Owner

@yutian81 commented on GitHub (Sep 13, 2024):

注意安全啊,如果在公开网络上使用,至少设置登录

SERVER_SECRET=some_server_secret
SERVER_PASS=password_to_login
ENABLE_AUTH=1 

感谢提醒,我也发现了这个问题,没有密码,任何人都可以远程登录我部署的项目。。。
这几个变量正好解决了我的顾虑

这个secret和pass有什么区别。pass我知道是打开web版所需要的密码,secret是干什么用的,是访问容器本身所需要的密钥吗?

<!-- gh-comment-id:2348876416 --> @yutian81 commented on GitHub (Sep 13, 2024): > 注意安全啊,如果在公开网络上使用,至少设置登录 > > ``` > SERVER_SECRET=some_server_secret > SERVER_PASS=password_to_login > ENABLE_AUTH=1 > ``` 感谢提醒,我也发现了这个问题,没有密码,任何人都可以远程登录我部署的项目。。。 这几个变量正好解决了我的顾虑 这个secret和pass有什么区别。pass我知道是打开web版所需要的密码,secret是干什么用的,是访问容器本身所需要的密钥吗?
Author
Owner

@yutian81 commented on GitHub (Sep 13, 2024):

另外,你说的网络权限的问题,我复现了。
填入服务器的登录信息后,如果直接点"连接",就会没有网络权限,必须要点"保存并连接"才可以连接到ssh

<!-- gh-comment-id:2348879093 --> @yutian81 commented on GitHub (Sep 13, 2024): 另外,你说的网络权限的问题,我复现了。 填入服务器的登录信息后,如果直接点"连接",就会没有网络权限,必须要点"保存并连接"才可以连接到ssh
Author
Owner

@zxdong262 commented on GitHub (Sep 14, 2024):

注意安全啊,如果在公开网络上使用,至少设置登录

SERVER_SECRET=some_server_secret
SERVER_PASS=password_to_login
ENABLE_AUTH=1 

感谢提醒,我也发现了这个问题,没有密码,任何人都可以远程登录我部署的项目。。。 这几个变量正好解决了我的顾虑

这个secret和pass有什么区别。pass我知道是打开web版所需要的密码,secret是干什么用的,是访问容器本身所需要的密钥吗?

secret是加密的密匙

<!-- gh-comment-id:2350789135 --> @zxdong262 commented on GitHub (Sep 14, 2024): > > 注意安全啊,如果在公开网络上使用,至少设置登录 > > ``` > > SERVER_SECRET=some_server_secret > > SERVER_PASS=password_to_login > > ENABLE_AUTH=1 > > ``` > > 感谢提醒,我也发现了这个问题,没有密码,任何人都可以远程登录我部署的项目。。。 这几个变量正好解决了我的顾虑 > > 这个secret和pass有什么区别。pass我知道是打开web版所需要的密码,secret是干什么用的,是访问容器本身所需要的密钥吗? secret是加密的密匙
Author
Owner

@yutian81 commented on GitHub (Sep 16, 2024):

大佬,又来麻烦你了。。。electerm支持命令行操作吗?
我在这里看到支持批量操作:https://github.com/electerm/electerm/wiki/batch-operation
那么理论上就是支持命令行的。如果支持,命令行参数格式是怎样的?二进制文件在哪?
我想在cf worker里搭建一个项目,用命令行连接ssh并执行指定的命令,以实现某些自动化目的。
不知是否可行?

<!-- gh-comment-id:2352350369 --> @yutian81 commented on GitHub (Sep 16, 2024): 大佬,又来麻烦你了。。。electerm支持命令行操作吗? 我在这里看到支持批量操作:https://github.com/electerm/electerm/wiki/batch-operation 那么理论上就是支持命令行的。如果支持,命令行参数格式是怎样的?二进制文件在哪? 我想在cf worker里搭建一个项目,用命令行连接ssh并执行指定的命令,以实现某些自动化目的。 不知是否可行?
Author
Owner

@zxdong262 commented on GitHub (Sep 16, 2024):

大佬,又来麻烦你了。。。electerm支持命令行操作吗? 我在这里看到支持批量操作:https://github.com/electerm/electerm/wiki/batch-operation 那么理论上就是支持命令行的。如果支持,命令行参数格式是怎样的?二进制文件在哪? 我想在cf worker里搭建一个项目,用命令行连接ssh并执行指定的命令,以实现某些自动化目的。 不知是否可行?

这个需求更适合写一个简单的web服务来做,可以让AI来写 "write a simple expressjs app, /api/run-cmd API would use basic auth, to get cmd from user ,then run cmd with exec, should read username/password from .env"

.env

USERNAME=xxxx
PASSWORD=yyyy

app.js

const express = require('express');
const app = express();
const basicAuth = require('express-basic-auth');
const { exec } = require('child_process');
const dotenv = require('dotenv');

dotenv.config(); // Load environment variables from .env file

// Set up basic auth middleware
const auth = basicAuth({
  users: {
    [process.env.USERNAME]: process.env.PASSWORD
  },
  challenge: true,
  realm: 'My App'
});

// Apply basic auth middleware to the /api/run-cmd route
app.use('/api/run-cmd', auth);

// Route to run commands
app.get('/api/run-cmd', (req, res) => {
  const cmd = req.query.cmd;
  if (!cmd) {
    return res.status(400).json({ error: 'No command provided' });
  }

  exec(cmd, (error, stdout, stderr) => {
    if (error) {
      return res.status(500).json({ error: `Error executing command: ${error.message}` });
    }
    if (stderr) {
      return res.status(200).json({ stdout, stderr });
    }
    res.status(200).json({ stdout });
  });
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
<!-- gh-comment-id:2352678486 --> @zxdong262 commented on GitHub (Sep 16, 2024): > 大佬,又来麻烦你了。。。electerm支持命令行操作吗? 我在这里看到支持批量操作:https://github.com/electerm/electerm/wiki/batch-operation 那么理论上就是支持命令行的。如果支持,命令行参数格式是怎样的?二进制文件在哪? 我想在cf worker里搭建一个项目,用命令行连接ssh并执行指定的命令,以实现某些自动化目的。 不知是否可行? 这个需求更适合写一个简单的web服务来做,可以让AI来写 "write a simple expressjs app, /api/run-cmd API would use basic auth, to get cmd from user ,then run cmd with exec, should read username/password from .env" .env ```.env USERNAME=xxxx PASSWORD=yyyy ``` app.js ```js const express = require('express'); const app = express(); const basicAuth = require('express-basic-auth'); const { exec } = require('child_process'); const dotenv = require('dotenv'); dotenv.config(); // Load environment variables from .env file // Set up basic auth middleware const auth = basicAuth({ users: { [process.env.USERNAME]: process.env.PASSWORD }, challenge: true, realm: 'My App' }); // Apply basic auth middleware to the /api/run-cmd route app.use('/api/run-cmd', auth); // Route to run commands app.get('/api/run-cmd', (req, res) => { const cmd = req.query.cmd; if (!cmd) { return res.status(400).json({ error: 'No command provided' }); } exec(cmd, (error, stdout, stderr) => { if (error) { return res.status(500).json({ error: `Error executing command: ${error.message}` }); } if (stderr) { return res.status(200).json({ stdout, stderr }); } res.status(200).json({ stdout }); }); }); const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Server is running on port ${port}`); }); ```
Author
Owner

@yutian81 commented on GitHub (Sep 16, 2024):

非常感谢。。。膜拜

<!-- gh-comment-id:2352826472 --> @yutian81 commented on GitHub (Sep 16, 2024): 非常感谢。。。膜拜
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/electerm-web-docker#9
No description provided.