家庭个人服务器的搭建之路--非傻瓜式描述

2023-11-04

       本文记录了个人亲身搭建samba服务的经历,对于软件如何安装之类的内容没有详细讲解,需要各位自行解决软件安装问题,本文主要讲解了Samba服务器外网可访问的拓扑架构以及实现方式。

我的服务器环境描述

  •         一台ubuntu主机,OS使用的是Ubuntu 22.04;
  •         4个机械硬盘(其中3个USB移动硬盘,1个内置的SATA硬盘)

实现的功能:

  1.         外网可以直接访问此服务器
  2.         硬盘定时进入standby状态,以减小硬盘损坏的机率。

实现方式:

  •         外网可以直接访问此服务器的实现方式:

                        1. 安装SSH。

                        2. 搭建Samba服务器,并将相关硬盘分区挂载。

                        3. 到花生壳 或者 公云 网站申请动态域名,然后进行绑定。

                        4. 路由器开启端口转发

  •         硬盘定时进入standby状态 的实现方式:

                        1. 使用hdparm命令,编写bash脚本,加入开机自动启动实现。

  •        开机自动挂载硬盘分区
  •        服务器掉电恢复后自动开机

接下来分别说明一下每个功能的具体实现方式

        1. Samba服务器搭建

              ---建议先自行bing搜索Samba搭建方式,资料太多了,我这里仅说明一些特殊的配置点。

                a. 安装Samba & SSH

                       SSH安装:

                                安装系统时选择SSH组件,或者使用如下命令:

                                sudo apt install openssh-server -y        // 安装SSH

                                sudo systemctl enable --now ssh          // 启动SSH

                        Samba安装:

                                sudo apt install samba

                b. 在/srv下创建Samba目录,然后在下面创建自己想要分享的目录,我的如下:

                

                ps.   /srv目录是最新出来的规范,所有的网络服务相关的数据建议都放在这个目录下。 

                        比如想搭建个网站,则在此目录在新建一个www目录,将相关内容放到此目录。

                 c. 新建samba用户,此用户必须是ubuntu已存在的用户。

        

                d. 修改 /etc/samba/smb.conf ,对待共享的目录进行配置并添加到此文件末尾。

                                             

        Samba的配置参数说明如下:    

[Shares]

共享的名字

comment = Shares

一些解释信息,随意

path = /mnt/Shares/

共享内容的路径

create mask = 0777

权限

directory mask = 0777

权限

public = yes

指定该共享是否允许guest账户访问。

guest ok = yes

指定该共享是否允许guest账户访问。

writable = yes

用来指定改共享路径是否可写

readonly = no

是否只能

valid users = zenos

允许访问该共享自研的用户

browsable = yes

用来指定该共享是否可以浏览

available = yes/no

用来指定改共享资源是否可用

admin user = 该共享的管理者

用于指定该共享的管理员(对该共享具有完全控制权限)

在samba3.0中,如果“security=share"时,此项无效。

多个用户有“,”隔开。

invalid users = xxxx

禁止访问该共享的用户。(root, @workgroup)

write list = xxxx

允许写入该共享的用户。

                e. samba服务的两个操作说明                

                       · service smbd restart  --- 重启Samba服务(在ubuntu上执行)

                       · net use * /del /y          --- 结束Win下的网络连接(在window的win+R中执行)

        2. 动态域名绑定

                --- 释义:家用的IP,隔段时间就会发生变化,我们访问家里的服务器主机是需要知道家 

                               里的IP的,动态域名绑定 即 将家里的IP隔段时间就往指定域名更新绑定一次,

                               这样我们在外面也能知道家里的IP了。

                a. 申请花生壳 或者 公云的账号       

                        --- 申请方式也请大家自行解决啦,建议使用公云,好申请,申请方便。

                b. 登陆

                        i. 花生壳账号登陆一般在路由器上都有。如下图:

                            

                         ii. 公云的登陆方式有的路由器有,有的没有,我的路由器有可以登陆公云,

                            但是路由器同步的是我都内网IP(192.168.x.x这种),建议在ubuntu主机上

                            运行脚本来实现动态同步。

                 下图是公云官网的介绍,先安装lynx,然后按照下图大红框里的内容执行指令即可,

                 当然验证成功后,也需要写一个脚本,加入开机启动项目定时执行一次这个指令。

                

                 公云自动同步脚本如下:

#!/bin/bash


while [ 1 ];do

lynx -mime_header -auth=@用户名:@密码 "http://members.3322.net/dyndns/update?system=dyndns&hostname=@你申请的动态域名"

sleep 5m


done

                域名绑定成之后,就可以找到咱们的IP啦,ping一下就能显示(不一定有返回值,和设置有关系),当然有域名之后,IP也不用care啦,后续直接使用域名即可。

        3. 路由器端口转发设置

           域名绑定之后从外网就可以访问到家里的公网IP啦(光猫上的IP),但是想要进入家里面的服务器,还需要在配置一下路由器的端口,否则 还是连接不到我们的服务器。这是因为各种协议的连接都是要走指定端口的,比如:SSH:22, Telnet:23,远程桌面(mstsc):3389等。

  • 绘制了一个外网访问内网的拓扑图如下:       

 SSH使用Port 22, Samba使用的是445,在路由器上添加相关转发即可。

 Samba协议设计多个端口,普通文件共享浏览用的445端口。

 我的端口映射,如下图所示:(由于运营商把445端口屏蔽了,所以445端口对应的外部端口我换了一个,如下图红框)

以上: 配置好之后,既可在外网电脑端使用winscp进行登陆,或者使用手机端相关软件(我只验证了iphone的),但是不能用win+r 输入网址登陆(此法使用445端口),因为三大运营商把445端口给封禁了,得另想他法。

winscp登陆如下:   需要使用Port 22端口。

           

          

 手机端使用如下软件可以成功登陆并使用:使用Port 445端口

                                            

                              

如下win+r 方式 暂未搞定:

        网络上很多介绍让按照如下方式配置端口转发的,暂未搞定

        netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport= xxxx connectaddress=SERVER_IP

            

         4. 硬盘定时进入standby状态

             并不是所有的硬盘都支持进入standby模式,可使用的工具有hdparm, hd-idle 和 sdparm,三个工具的使用可以参考此文章:【Linux】硬盘休眠 - Rehtt's Blog

  • 配置此功能一共分两步:
    1. 编写自动待机脚本
    2. 加入开机启动项目
  • 编写自动待机脚本,并添加可执行权限

               傻瓜时的脚本,每5分钟执行一次

#!/bin/bash


while [ 1 ];do


 hdparm -y /dev/sda
 hdparm -y /dev/sdc1
 hdparm -C /dev/sda
 hdparm -C /dev/sdc1

sleep 5m

 hdparm -C /dev/sda
 hdparm -C /dev/sdc1

done
  •   加入开机启动项

         编辑vi /etc/rc.local,添加相应内容。(末尾的 & 号,一定要加,表示后台运行)

         第一个是硬盘自动休眠的,第二个是公云的DDNS自动同步的。

                       
  

       ps. ubuntu 22.04的 rc.local配置跟之前的版本有些不一样,请参考下面文章

                 “ubuntu22.04设置开启自启动命令脚本_pazzn的博客-CSDN博客

         5. 开机自动挂载硬盘分区

                方式:通过UUID来挂载

                查看分区的UUID,命令:blkid,样本展示如下:                

                编辑 /etc/fstab,在末尾添加配置,我都配置如下

UUID="84D61FEBD61FDC6C" /mnt/Phicomm ntfs nls-utf8,umask-0222,uid-1000,gid-1000,rw 0 0
UUID="AAD8C305D8C2CF2F" /mnt/Movies  ntfs nls-utf8,umask-0222,uid-1000,gid-1000,rw 0 0
UUID="9092EDE792EDD1B0" /mnt/Seagate ntfs nls-utf8,umask-0222,uid-1000,gid-1000,rw 0 0
UUID="BE36-53A8" /mnt/Symbols auto nosuid,nodev,nofail 0 0

          6. 服务器掉电恢复后自动开机

                这个是电脑主板的功能,需要在BIOS界面配置,我的电脑是华硕的,以华硕为例:

BIOS--Advanced--APM选项里有如下几个选项:

  • ERP是欧盟的节能标准,设置关闭
  • Restore AC Power Loss设为Power On即可。

        第三项WOL打开,还能支持网络唤醒开机(WOL: Wake On Lan)

在这里插入图片描述

在这里插入图片描述

其它说明:

  1.         暂未实现数据备份功能,即硬盘损坏数据会丢失。
  2.         硬盘数据备份可以采用硬Raid,软Raid 或者 自己定期讲最重要的数据传到云盘里备份(eg: 百度云盘,阿里云盘)

初稿完结。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

家庭个人服务器的搭建之路--非傻瓜式描述 的相关文章

随机推荐

  • MicroPython串口数据转换技巧

    技巧一 还原从串口接收的HEX字符串 首先上官方文档 确认接收数据类型为bytes 串口读来的bytes类型HEX数据转换成HEX类型字符串转换函数 ByteToHex的转换 返回数据16进制字符串 def ByteToHex bins r
  • 使用Nacos实现分布式配置管理和服务发现

    文章目录 一 前言 二 Nacos 1 1什么是Nacos 1 1 1 服务发现和注册 1 1 1 1 服务注册 1 1 1 2 服务发现 1 2 Nacos的使用 1 2 1 配置管理 1 2 2 服务发现 三 结论 一 前言 在现代分布
  • 相关滤波的视觉目标跟踪算法学习

    相关滤波的视觉目标跟踪算法学习内容 1 视觉目标跟踪的难点 训练数据有限 通用目标跟踪任务中 目标先验知识缺乏 仅有目标初始位置信息 目标不确定性 跟踪过程中 随着目标尺寸 形状以及姿态等变化 其外观模 型存在明显差异 多目标跟踪任务中 当
  • 1.2 DICOM成像协议剖析

    以下链接是本系列文章 不足之处 可在评论区讨论 系列文章 1 1 DICOM协议简介及应用 1 2 DICOM成像协议剖析 1 3 DICOM成像协议实现思路 1 4 DICOM图像CT值计算 1 5 DICOM图像CT值转RGB 1 6
  • linux+性能排查,Linux系统性能排查基础

    此文已由作者李晶授权网易云社区发布 欢迎访问 上一期运维季刊中 我们重点从CPU方面分析了Linux系统性能瓶颈 除了CPU之外 内存 IO和网络也是常见的造成系统出现问题的根源 本篇我们继续介绍如何从这三个子系统来排查Linux整个系统的
  • Redis配置数据持久化---APPEND ONLY MODE

    Redis可以实现数据的持久化存储 即将数据保存到磁盘上 Redis的持久化存储提供两种方式 RDB与AOF RDB是默认配置 AOF需要手动开启 现在Redis的配置中默认是关闭AOF模式的 如果要开启AOF模式 修改Redis的配置文件
  • [5机器学习]计算机视觉的世界-卷积神经网络(CNNs)

    我们知道 数据不仅包含文字 数字 还包含图片 视频等 如何更好地查看 识别和解释图像和视频的内容 就像人类视觉一样 一直是目前人工智能的主要研究方向 机器学习无疑是现代数据科学的核心 在经历了几十年回归 分类 决策树 异常检测的沉淀后 数据
  • 期货投资者教育系列丛书 铝

    铝是一种轻金属 其化合物在自然界中分布极广 地壳中铝的资源约为400 500 亿吨 仅次于氧和硅 具第三位 在金属品种中 仅次于钢铁 为第二大类金属 铝具有特殊的化学 物理特性 不仅重量轻 质地坚 而且具有良好的延展性 导电性 导热性 耐热
  • 2022春招前端最新面试题分享(航天宏图)

    航天宏图面经 公司及岗位信息 公司 航天宏图 岗位 前端校招 地点 北京 薪资 10k 15k 面试结果 二面必须让线下面试 去不了 一面 2022 04 21 自我介绍 为什么没有在实习公司转正 实习对于你最大的收获 WebSocket在
  • qt connect 无效_QT 信号槽connect写法

    先看下示例 QPushButton btn new QPushButton 方式一 老式写法 connect btn SIGNAL clicked this SLOT close 方式二 Qt5后新写法 connect btn QPushB
  • Vue父组件子组件的通信方式20种(全网最全总结)

    目录 一 常用 Props 父组件 子组件 emit和 on 父组件 子组件 parent和 children 父组件 子组件 attrs和 listeners 父组件 子组件 provide和inject 父组件 子组件 二 其他探索 E
  • Ubuntu安装Visual Studio Code

    一 Visual Studio Code介绍 Visual Studio Code 简称VS Code 是一款由微软开发的跨平台代码编辑器 它支持多种编程语言 包括C C Java JavaScript Python等等 VS Code具有
  • 快乐E栈项目实战第五阶段

    快乐E栈项目实战第五阶段 文章目录 快乐E栈项目实战第五阶段 1 前言 2 功能分析 3 简单协议设计 4 代码 1 服务端 2 客户端 5 结果 服务端 客户端 1 前言 学习完网络编程了 我们可以试着开发一个服务端程序 将快递信息发送到
  • I帧、P帧、B帧

    I帧 P帧 B帧 简单地说 I帧是关键帧 属于帧内压缩 就是和AVI的压缩是一样的 P是向前搜索的意思 B是双向搜索 他们都是基于I帧来压缩数据 I帧表示关键帧 你可以理解为这一帧画面的完整保留 解码时只需要本帧数据就可以完成 因为包含完整
  • 华为OD机试真题-最左侧冗余覆盖子串【2023.Q1】

    题目描述 给定两个字符串 s1 和 s2 和正整数k 其中 s1 长度为 n1 s2 长度为 n2 在s2中选一个子串 满足 1 该子串长度为n1 k 2 该子串中包含s1中全部字母 3 该子串每个字母出现次数不小于s1中对应的字母 我们称
  • 4万字 全面解读数据中台、数据仓库、数据湖等概念!建议收藏!

    作者丨修鹏李 建议阅读需50分钟 如今 随着诸如互联网以及物联网等技术的不断发展 越来越多的数据被生产出来 据统计 每天大约有超过2 5亿亿字节的各种各样数据产生 这些数据需要被存储起来并且能够被方便的分析和利用 随着大数据技术的不断更新和
  • JWT登录过期自动刷新方案与token泄漏解决方案

    概念 简单来说JWT就是通过一定规范来生成token 再用解密算法解密token 就可以获取用户信息了 优缺点 优点 避免重复查库 存储在客户端 不占用服务端资源 缺点 token是经过base64编码 所以可以解码 因此token加密前的
  • 微博数据处理——处理僵尸用户数据集(二)

    获取僵尸用户数据集可见上文 https blog csdn net weixin 43906500 article details 116447858 1 数据集展示 僵尸数据集如下所示 2 处理数据集 编写处理代码 将所需训练数据保存为c
  • Vue 集成 stylus和stylus-loader

    stylus和stylus loader安装 cnpm i stylus S cnpm i stylus loader S stylus使用 一 语法不再需要括号 相比之前语法简洁
  • 家庭个人服务器的搭建之路--非傻瓜式描述

    本文记录了个人亲身搭建samba服务的经历 对于软件如何安装之类的内容没有详细讲解 需要各位自行解决软件安装问题 本文主要讲解了Samba服务器外网可访问的拓扑架构以及实现方式 我的服务器环境描述 一台ubuntu主机 OS使用的是Ubun