Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在PaaS平台部署docker镜像失败 #10

Open
yutian81 opened this issue Sep 11, 2024 · 22 comments
Open

在PaaS平台部署docker镜像失败 #10

yutian81 opened this issue Sep 11, 2024 · 22 comments

Comments

@yutian81
Copy link

yutian81 commented Sep 11, 2024

我在 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
@zxdong262
Copy link
Member

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

@zxdong262
Copy link
Member

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

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

@zxdong262
Copy link
Member

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

@yutian81
Copy link
Author

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

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

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

@yutian81
Copy link
Author

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

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

@zxdong262
Copy link
Member

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

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

volumes设置里

@yutian81
Copy link
Author

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

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

volumes设置里

看到了 谢谢

@yutian81
Copy link
Author

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

image

这里不应该是8082?

@zxdong262
Copy link
Member

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

image

这里不应该是8082?

设为5577

@yutian81
Copy link
Author

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

@zxdong262
Copy link
Member

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

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

@yutian81
Copy link
Author

yutian81 commented Sep 12, 2024

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

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

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

@yutian81
Copy link
Author

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

@yutian81
Copy link
Author

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

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

https://webssh.yzong.us.kg

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

@yutian81
Copy link
Author

yutian81 commented Sep 12, 2024

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

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

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

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

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

@zxdong262
Copy link
Member

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

SERVER_SECRET=some_server_secret
SERVER_PASS=password_to_login
ENABLE_AUTH=1 

@yutian81
Copy link
Author

yutian81 commented Sep 13, 2024

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

SERVER_SECRET=some_server_secret
SERVER_PASS=password_to_login
ENABLE_AUTH=1 

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

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

@yutian81
Copy link
Author

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

@zxdong262
Copy link
Member

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

SERVER_SECRET=some_server_secret
SERVER_PASS=password_to_login
ENABLE_AUTH=1 

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

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

secret是加密的密匙

@yutian81
Copy link
Author

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

@zxdong262
Copy link
Member

大佬,又来麻烦你了。。。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}`);
});

@yutian81
Copy link
Author

非常感谢。。。膜拜

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants