全栈云服务器 Northflank 从0到1体验 docker Ubuntu 畅享 SSH 服务


Northflank 从0到1安装体验 docker Ubuntu 无需保活配置 Frp 畅享 SSH 服务

The comprehensive developer platform to build and scale microservices, jobs and managed databases with a powerful UI, API & CLI.
译: Northflank 一个全栈云平台,开发者注册可以体验免费计划,连接他们的版本控制-GitHub、Bitbucket或GitLab-并通过Docker文件立即构建和部署他们的所有存储库。

本文介绍的是 Docker 容器为 Ubuntu,若需要探讨 Alpine 环境,可以将本文结合 解决 Alpine 安装 ssh 异常错误Alpine 安装 Python 环境 一起学习。

官方主页

https://app.northflank.com/signup

支持服务

docker、Nginx、Python、Django、Rust、Node.js、Ruby、Vue ...详细见官网

一句话基本上服务都能跑,没有的就自己建 docker 再 pull

贴个部署完的探针配置图,开源探针地址在 首发开源 ServerStatus-Tiny 轻量化跨平台多服务器一站式监控平台

注册准备

  • 一个邮箱
  • 良好的网络状况
  • 一张信·用·卡(可用虚拟卡,不会扣费)

注册过程略过,记得进去选 developer free 计划。

服务安装

部署服务

Deployment -> docker

记得选外部镜像

docker 仓库填 ubuntu:latest (拉取最新 ubuntu )

配置ubuntu服务

于 docker 内运行以下命令
  • 更新源

    apt update && apt upgrade
  • 安装常用工具

    强烈建议先安装下列程序中的 screen

    这里有坑:Northflank 有时会网络崩了给你断开连接,如果正在安装程序可能会导致中断!所以采用 screen 的方式挂起安装服务,即时异常退出仍然后台运行。

    # screen
    apt install screen -y
    
    # 开一个 screen 会话
    screen -S Suroy
    
    # 网络工具: netstat, etc
    apt install net-tools -y
    
    # 常用工具
    apt install vim neofetch top -y
    
    # ping
    apt install iputils-ping -y
  • 安装ssh及配置

    若感觉ssh配置麻烦可以参考本节底部两个附录简化操作。
    • 安装
    apt install openssh-server -y
    • 修复 docker 下的 ssh 服务
    # 启动之前需手动创建/var/run/sshd,不然启动sshd的时候会报错
    mkdir -p /var/run/sshd
    • 登录方式(2选1): 设置密码登录
    container 版 os 的 root 也是沒有密码的,所以也得先设置一下:
    # 修改root密码,用于登录
    passwd
    # Enter new UNIX password:
    # Retype new UNIX password:
    
    # 配置ssh允许root登录、允许使用密码认证方式
    echo "Port 22" >> /etc/ssh/sshd_config
    echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    
    # 重启ssh
    /etc/init.d/ssh restart
    • 登录方式(2选1): 使用 key 登录
    # 生成ssh-key
    ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -P '' -N ''
    • 启动 ssh 服务
    # 关闭原进程-即重启sshd
    ps -aux | grep ssh
    kill -9 pid
    # 以守护进程运行ssh服务
    /usr/sbin/sshd -D &
    • 检测sshd是否运行
    # 若22端口被监听即成功
    netstat -apn | grep ssh 
    • 附: Dockerfile 开启自动启动ssh
    如果想在 container 一启动就可以用 ssh 的話可以參考下面 Dockerfile 的写法,仅适用于 Ubuntu
    FROM ubuntu:18.04
    
    RUN apt update
    RUN apt install openssh-server -y
    RUN echo 'root:password' | chpasswd
    RUN echo "Port 22" >> /etc/ssh/sshd_config
    RUN echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
    RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    
    EXPOSE 22
    
    CMD /etc/init.d/ssh restart
    • 附: 带 ssh 的Ubuntu镜像
    未测试,请自行研究
    https://hub.docker.com/r/rastasheep/ubuntu-sshd

FRP 配置转发

由于 Northflank 只提供了 80/443 的http公开端口服务,故其他的服务只能通过端口转发实现了。
这里用的是免费 FRP 服务,其实可以自己驾设一个,也不繁琐,行文方便就拿一个公开。
  • 部署FRP服务

    cd /root
    wget https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh
  • 修改配置

    使用免费 FRP 内网转发服务,这里是我写的demo,可以直接用,注意改名
    vim /usr/local/frp/frpc.ini

    配置文件demo

    [common]
    server_addr = frp3.freefrp.net
    server_port = 7000
    token = freefrp.net
    # 以上为frp服务器信息
    
    # 以下为本地内网客户端信息 | 名字记得改
    [ssh_suroy2333]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    remote_port = 26666 # 端口记得更改
  • 附录
    frp官方文档: https://gofrp.org/docs/examples/
    freefrp: https://freefrp.net
    frp开源项目: https://github.com/fatedier/frp

畅游 SSH

启用了frp之后使用frp地址进行登录
ssh root@FRP_ADDRESS -p FRP_FORWARD_PORT

FRP_ADDRESS: FRP服务器地址(server_addr -> 本文是frp3.freefrp.net)
FRP_FORWARD_PORT: FRP服务转发端口(remote_port -> 本文是26666)

异常处理

  1. screen 意外退出怎么终止
# 1234.xxx 为会话名
screen -S 1234.xxx -X exit

写在最后

本文旨在学习 docker 容器及云服务,不提倡也不支持白嫖云服务。

声明:Grows towards sunlight |版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 全栈云服务器 Northflank 从0到1体验 docker Ubuntu 畅享 SSH 服务


Grows towards sunlight and Carpe Diem