2021基于Debian的All in One(NAS+软路由)配置教程

系统概述

需求分析

  • 作为影迷,有一定的观影需求,同时也有兼职剪辑。考虑苹果新M1的macbook air的剪辑配置,唯一缺陷就是容量太小又不可拓展,所以搭配nas作为存储延伸。
  • 为何选择Debian,因为作为计算机专业,折腾的过程也是学习的过程,linux可以有更多功能选择,不需要装虚拟机就能All in One (boom) ,可以做服务器,我写了一个网站可以挂在上面让大家访问。也可以做软路由,安装***等转发流量就可以全局。
  • 该教程主要为提供思路,记录一些配置过程使用的命令,也作为自己备忘录,具体详细过程无法一一描述,若有建议或者疑问,欢迎大家一起讨论

功能实现

  • 挂载硬盘作为nas存储视频等文件
  • 部署网站供大家访问
  • 作为软路由转发流量

系统配置简介

  1. 梅捷N3150L主板
  2. CPU是N3150(4核6W支持AES 稍弱于J1900但可硬解4k)
  3. 4G内存1600HZ
  4. 8+14T机械硬盘
  5. U盘16G作为系统盘
  6. TP-link WiFi6的路由器进行DDNS和端口转发

Debian10的镜像下载与安装

  1. 镜像链接:Debian原网站镜像
  2. U盘工具:Ventory
  3. 用另一个U盘作为系统盘(可节约一个SATA接口

系统配置准备

oh my zsh安装

装机第一件事就是要看得舒服

apt-get install zsh#安装zsh作为shell
chsh -s /bin/zsh#激活环境

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
#个性化配置
#可以记住历史目录,不需要一直cd 如果卡住可能是需要认证rsa.pub的公钥 ssh-kengen生成一下,添加到github的设置->SSH and GPG keys
git clone https://github.com/joelthelion/autojump
cd autojump
./install.py

git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions#自动补全命令

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting#语法高亮

vim ~/.zshrc 把插件加到文件中

vim ~/.zshrc配置文件的plugins 加上autojump zsh-syntax-highlighting zsh-autosuggestions生效,最后再source ~/.zshrc重新编译zsh,此时autojump已经生效。其他同理

ssh远程访问

cd /etc/ssh
nano sshd_config
//添加一行 PermitRootLogin yes
//ctrl x保存退出

将#PasswordAuthentication no的注释去掉,并且将NO修改为YES
完成上述更改后,请重新启动SSH服务器:

/etc/init.d/ssh restart 或者service ssh start

添加开机自启动

update-rc.d ssh enable

免明文登陆

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa root@ipp

开机自动登录root

  1. 进入root用户,编辑文件/lib/systemd/system/getty@.service
nano /lib/systemd/system/getty@.service
//ctrl x保存
  1. 设置字段ExecStart
ExecStart=-/sbin/agetty --autologin root --noclear %I $TERM//添加或修改这行数据

//ctrl x保存

白嫖cloudflare的服务穿透内网,前提是需要域名

参考链接

curl -L 'https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64' -o /usr/bin/cloudflared
chmod +x /usr/bin/cloudflared

cloudflared tunnel login
#然后会让打开浏览器登陆验证
A browser window should have opened at the following URL:

https://dash.cloudflare.com/arg***
#注意:授权一次只能选择一个网站。如果存在多个不同域名的网站,请授权完成后不要关闭网页,点击第二个、第三个要授权的域名,进行多次授权。


cloudflared tunnel create <隧道名字>#比如 webserver-1
#然后有uuid要记下
Tunnel credentials written to /root/.cloudflared/12345-123-123-123-12345.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.

Created tunnel webserver-1 with id 12345-123-123-123-12345

......

rclone使用

rclone不仅可以挂载网盘还能挂FTP、sftp等等,当作同步的工具也很不错,这里介绍下sftp的挂载

#一键安装最新的版本,自带的比较老

sudo -v ; curl https://rclone.org/install.sh | sudo bash

ssh-keygen -q -t rsa -b 4096 -C "rclone key" -N "" -f ~/.ssh/rclone
cd ~/.ssh/
cat rclone* > rclone-merged 
#配置除了地址账号密码这些一切都默认,除了下面这个
key_file> ~/.ssh/rclone-merged

apt install fuse3

rclone mount -vv alist: /alist --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --vfs-cache-mode writes  --daemon

Tailscale

  • 需要客户端,不是很方便
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up

图形化界面卸载

图形化界面比较占内存,而我多数时候SSH也用不上,所以将其卸载

apt autoremove gdm3
apt autoremove --purge gnome*

//reboot重启

网路配置

  1. 向运营商申请外网IP,一般打电话就行(现在可能不容易了)
  2. 申请一个域名,我用的阿里的
  3. 因为拨号上网IP不会固定,所以需要路由器的DDNS通过域名绑定IP访问
  4. 在路由器的虚拟服务器上面设置端口转发,可以转发被禁的80或者443端口

编辑设置:vim /etc/network/interfaces

source /etc/network/interfaces.d/*
##总的来说是用的enp2s0网口,也就是外接的千兆网卡,分配静态ip
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp2s0

##动态ip
#iface enp3s0 inet dhcp
#iface enp3s0 inet loopback

##静态ip
iface enp2s0 inet static
address 192.168.1.107
#address 192.168.101.111
netmask 255.255.255.0
gateway 192.168.1.1
auto enp2s0

网络自动重连

写了个脚本自动检测网络,断开则重连,下面是环境需要

pip install selenium
apt install chrome-driver
apt-get install -y libnss3-dev libgconf-2-4 xvfb

磁盘相关命令

  1. 磁盘分区
fdisk -l
//查看所有磁盘信息
fdisk  /dev/sdb
//对sdb磁盘进行分区

若磁盘大于2T,需要parted命令分区

parted /dev/sdb  //分区磁盘sdb
mklabel gpt  //parted命令只能针对gpt格式的磁盘进行操作 
mkpart ext4 0% 1.5T//将0到1.5T划为一个分区
(parted) p //查看所有磁盘信息
mkfs -t ext4 /dev/sdb1   //格式化分区sdb1
  1. 查看当前已挂载磁盘
df -h
  1. 挂载磁盘
 mount /dev/sdb1 /mnt/fodername1
 //将磁盘sdb1挂载到相同的逻辑文件/data下,卸载则换为umount
  1. 开机自动挂载磁盘
 vim /etc/fstab
 //打开fstab文件写入命令
 UUID=b394c406-5c0e-4e16-9d80-a212c34a8d32 /mnt            ext4    defaults   0
/dev/sdb1                               /mnt/Film             ext4              defaults 0
/dev/sdb2                               /mnt/Material   		ext4            defaults 0

 
  1. 磁盘通电时间等详细参数
 apt-get install smartmontools
 //下载磁盘测试工具
 smartctl -A /dev/sdb
 //测试sda磁盘
  1. 磁盘读写速度
 hdparm -Tt /dev/sda
 //sda换为测试的硬盘
  1. 磁盘清理查看
apt install ncdu
ncdu / --exclude /foldername
 //可按照文件占用大小排序查看

虚拟环境

Docker安装

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
conda

比起virtualenv,conda最大优点是可以自动安装指定新版本python,不用本地环境

wget -4 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh
#第二步安装
sh Miniconda3-py39_4.9.2-Linux-x86_64.sh -b -p /root/miniconda3

#第三步配置conda镜像

export PATH=/root/miniconda3/bin:$PATH
# alias ohmyzsh="mate ~/.oh-my-zsh"

vim ~/.zshrc
## 添加下面的内容
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/root/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/root/miniconda3/etc/profile.d/conda.sh" ]; then
        . "/root/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/root/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

source ~/.zshrc

conda create -n py39 python=3.9
conda activate py39
Jupyter lab
conda install jupyterlab
#创建密码
jupyter lab password
#生成配置文件
jupyter lab --generate-config
#编辑文件
vim /root/.jupyter/jupyter_lab_config.py
##修改下面的
c.ServerApp.root_dir = ''                  # 设置默认工作目录
c.ServerApp.ip = '*'                     # 允许访问此服务器的 IP,星号表示任意 IP
c.ServerApp.password = '****************' # 之前生成的密码 hash 字串在/root/.jupyter/jupyter_server_config.json, 粘贴进去
c.ServerApp.open_browser = False         # 运行时不打开本机浏览器
c.ServerApp.port = 8888                  # 使用的端口,随意设置,但是要记得你设定的这个端口
c.ServerApp.enable_mathjax = True        # 启用 MathJax
c.ServerApp.allow_remote_access = True   # 允许远程访问
c.ServerApp.allow_root = True            # 允许root权限

Jellyfin安装配置

docker pull nyanmisaka/jellyfin

docker run -d -p 8096:8096 -v /jellyfin/config:/config -v /mnt/AllMedia:/media -v /mnt/Other:/Film3 -v /mnt/Film:/Film2 --restart=always nyanmisaka/jellyfin
  1. -p 后面是jellyfin服务的端口号,安装时可以指定,这里使用默认的8096;
  2. -v 后面是指定的配置路径,比如 /mnt/film 就是我原来的影音物理路径,/media就是jellyfin的映射路径
  3. 可以通过http://本地ip:8096 来访问jellyfin服务了,后期也可以转发端口在外网用域名访问

Samba安装配置

Debian终端

apt install samba

nano /etc/samba/smb.conf

//最后加上
[share]
comment = Provides Filesystem For Anyone
path = /share
browsable = yes
create mask = 0777
directory mask = 0777
read only = no
writable = yes
guest ok = yes
public = yes
forceuser=root
forcegroup=root

//创建共享目录并设置权限
mkdir /share
chmod -R 0777 /share
//客户端
apt install smbclient
//重启服务
systemctl restart smbd.service && systemctl restart nmbd.service

Windows终端

打开我的电脑,地址栏输入 \192.168.. (NAS所在局域网IP)会看到几个文件名

  • 注意,window上面映射地址不是挂载地址,而必须与上面文件累的path路径名称(/share)完全一致,包括大小写,不然会提示拼写错误
  • iPad也可用nPlayer的SMB配置访问这个地址

NFS

Samba配置太繁琐了,现在也不用Windows

apt-get install nfs-kernel-server 
apt-get install nfs-common   #MAC客户端自带,可不用安装

vim /etc/exports
#添加 *代表所有ip访问
/mnt *(rw,fsid=0,sync,no_root_squash,no_subtree_check,insecure)

/mnt/Other *(rw,sync,no_root_squash,no_subtree_check,insecure)
/mnt/AllMedia *(rw,sync,no_subtree_check,no_root_squash,insecure)
systemctl restart nfs-kernel-service#重启nfs服务
#Mac挂载命令
mount -t nfs -o nolocks 192.168.101.111:/mnt /Users/gawaintan/NAS

注意:*代表所有ip都允许访问,/mnt作为父级目录fsid=0只能出现一次,no_root_squash授予root权限,谨慎使用,insecure为了我避免客户端permission denied

网口

我买了块千兆网卡,但是装机插另一个网口了,导致开机默认不启动
所以需要设置一下

vim /etc/network/interfaces

auto enp2s0   #设置网卡自启动
iface wlan0 inet static    #设置网卡使用静态IP
address 192.168.101.111
netmask 255.255.255.0
gateway 192.168.101.1

安装配置aria2

…不怎么用了

mysql安装配置

在Debian的默认存储库中不可用,MariaDB是Debian 10中的默认数据库系统,我将介绍如何安装mysql8

wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb 
#下载完成后,以具有sudo权限的用户身份安装发行包:
apt install ./mysql-apt-config_0.8.13-1_all.deb
#选择MySQL Server & Cluster(当前选择:mysql-8.0)确定安装

#通过运行以下命令更新包列表并安装MySQL服务器包:
sudo apt update
sudo apt install mysql-server

等待安装,完成后用 systemctl status mysql检验安装是否成功
运行mysql_secure_installation设置密码,按照喜好选择Y
mysql -u root -p输入设置,密码登陆

软路由流量分发

其他命令

局域网网速测试

#Linux端
apt-get install iperf3
iperf3 -s#将linux作为服务器端
#windows端,官网下载iperf3,cmd命令到该目录下
Iperf3 -c 192.168.101.119

网络端口查看

apt-get install net-tools #新的系统可能不带该命令,也无法通过install ifconfig下载,只能用该命令

ethtool enp2s0#查看网口信息

screen命令的使用

方便切换进程,可以在一个进程未完成的时候将其挂起

screen
screen -ls#展示所有进程
screen -d id#detach该进程,可用切换远程终端访问
screen -r id #进入该进程

定时自动关机

因为寝室0:30停电,然后设置了主办来电自动开机

vim /etc/crontab
#最后添加一行代表0:22自动关机
22  0    * * *   root    /sbin/halt

开机启动管理工具

apt-get install sysv-rc-conf
sysv-rc-conf --level 345 mysql on #mysql可换其他服务
sysv-rc-conf#可查看选择启动权限

请添加图片描述

小工具集合

  1. htop用于观察系统占用资源情况
  2. ncdu /目录 可将该目录下所有文件从大到小排序

Alist

https://alist.nn.ci/zh/guide/install/script.html


curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install
  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Docker 内网穿透配置教程 (基于 Debian) 1. 安装 Docker:在 Debian 系统中安装 Docker 的方法请参考官方文档。 2. 安装 Nginx:在终端中输入以下命令安装 Nginx: ``` sudo apt-get update sudo apt-get install nginx ``` 3. 创建 Docker 容器:使用以下命令创建一个运行在端口 8080 上的 Docker 容器: ``` sudo docker run -p 8080:80 -d nginx ``` 4. 配置 Nginx:编辑 Nginx 配置文件(/etc/nginx/sites-available/default),添加以下内容: ``` server { listen 80; server_name 你的域名; location / { proxy_pass http://你的内网 IP:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 5. 重启 Nginx:使用以下命令重启 Nginx: ``` sudo service nginx restart ``` 6. 配置防火墙:如果你的机器上安装了防火墙,请在防火墙中添加规则,允许对外访问端口 80。 7. 配置完成:这样你就可以通过域名访问你的内网机器了。 ### 回答2: 基于Debian的Docker内网穿透配置教程如下: 1. 准备工作: - 安装Docker:使用apt-get命令安装Docker。 - 安装Docker Compose:使用pip命令安装Docker Compose。 2. 创建Dockerfile: - 在本地创建一个目录,用于存放配置文件和Dockerfile。 - 在该目录下创建一个Dockerfile,并添加以下内容: ``` FROM debian:latest ENV LC_ALL C.UTF-8 RUN apt-get update && apt-get install -y socat COPY entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] ``` 3. 创建entrypoint.sh脚本: - 在同一目录下创建一个entrypoint.sh文件,并添加以下内容: ``` #!/bin/bash socat tcp-listen:<本地端口号>,fork tcp:<目标IP地址>:<目标端口号> ``` 4. 构建Docker镜像: - 执行以下命令来构建Docker镜像: ``` docker build -t tunnel . ``` 5. 启动Docker容器: - 执行以下命令来启动Docker容器,并将本地端口映射到容器内部的端口: ``` docker run -d -p <本地端口号>:<容器内部端口号> tunnel ``` 6. 进行内网穿透测试: - 在本地访问`localhost:<本地端口号>`,将会使用内网穿透将请求转发到目标IP地址的目标端口号。 通过上述步骤,你可以配置基于Debian的Docker内网穿透。请确保替换相关的占位符,如本地端口号、目标IP地址和端口号,以满足你的实际需求。 ### 回答3: 基于Debian的Docker内网穿透配置教程如下: 1. 首先,确保你的Debian系统已经安装了Docker。可以通过运行以下命令进行检查: ``` docker --version ``` 2. 安装并配置代理服务器。我们使用Nginx作为代理服务器。运行以下命令进行安装: ``` sudo apt-get update sudo apt-get install nginx ``` 3. 修改Nginx的配置文件。打开Nginx的默认配置文件: ``` sudo nano /etc/nginx/sites-available/default ``` 4. 在配置文件的server节中添加以下内容,用于指定端口转发: ``` location / { proxy_pass http://localhost:8000; // 将8000端口替换成你实际使用的端口 } ``` 5. 保存配置文件并重启Nginx服务: ``` sudo service nginx restart ``` 6. 运行你的Docker容器,并暴露你想要的端口。假设你要将容器的80端口映射到主机的8000端口,你可以使用以下命令运行容器: ``` docker run -p 8000:80 <image> ``` 其中,`<image>`是你要运行的Docker镜像。 7. 现在,你的Docker容器的端口已经映射到了主机的8000端口。由于配置了Nginx代理服务器,因此你可以使用主机的IP地址和8000端口来访问Docker容器。 总结: 通过以上步骤,你可以在Debian系统上配置Docker内网穿透。通过Nginx代理服务器,你可以将Docker容器的端口映射到主机的指定端口,从而可以通过主机的IP地址和指定端口来访问Docker容器。这样,你就可以在内网环境中方便地访问Docker容器。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值