不要购买打印服务器,而是在 Linux 上构建一个。方法如下
要点
- 将装有 Linux 的旧 PC 重新用作打印服务器,以实现与平台无关的、经济高效的设置。
- CUPS 允许您的旧 PC 硬件充当各种平台的 Linux 打印服务器。
- 配置 CUPS 和 Samba 进行网络打印,然后轻松将设备连接到共享打印机。
由于复杂的设置或软件兼容性问题,共享打印机可能会很棘手。但是,对于旧计算机,您可以将其重新用作 Linux 打印服务器,将网络打印机共享简化为经济高效的解决方案。
我在 2015 年定制了一台旧电脑,将其用作 Windows 桌面,以提高工作效率和进行轻度游戏。自 2020 年以来,我已经转向 Mac,PC 变成了无头 Plex/打印服务器。虽然使用远程桌面管理它使得这成为可能,但我似乎总是遇到奇怪的网络权限怪癖和需要重新启动的频繁更新。
厌倦了这一切以及 Windows 的臃肿本质,我开始将这台旧 PC 重新调整为稳定、可靠的文件服务器,我不仅可以将其用于 Plex 和共享文件,还可以使用它进行打印,从任何计算机或设备,无论平台如何。
什么是 CUPS?
CUPS(通用UNIX打印系统)是类Unix操作系统的标准打印系统,允许计算机充当打印服务器,处理各种打印机的打印作业。 CUPS 支持多种打印机型号,并与互联网打印协议 (IPP) 兼容,支持跨 Windows、macOS、Android 和 iOS 的功能。
安装和配置 CUPS
安装 Linux 发行版后,请按照适合您的发行版的步骤安装 CUPS,然后启动并启用它,并将您的用户添加到 lpadmin 组,例如:sudo usermod -aG lpadmin matt<.
乌班图
sudo apt update
sudo apt install cups
sudo systemctl start cups
sudo systemctl enable cups
sudo usermod -aG lpadmin $USER
lpadmin 组的成员有权管理打印机和打印作业,其中包括通过 CUPS Web 界面添加和配置打印机。
软呢帽
sudo dnf install cups
sudo systemctl start cups
sudo systemctl enable cups
sudo usermod -aG lpadmin $USER
架构Linux
sudo pacman -S cups
sudo systemctl start org.cups.cupsd.service
sudo systemctl enable org.cups.cupsd.service
sudo gpasswd -a $USER lpadmin
配置 CUPS
安装 CUPS 后,您需要对其进行配置,以启用打印机共享和 CUPS Web 界面等。备份现有的默认配置。
sudo mv /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak
然后,启动一个新的配置文件。
sudo vim /etc/cups/cupsd.conf
接下来,在配置文件中添加或修改以下行。
# Basic server settings
LogLevel warn
PageLogFormat
Listen *:631
interfaces
Listen /run/cups/cups.sock
MaxLogSize 0
ErrorPolicy retry-job # Automatically retry failed print jobs
IdleExitTimeout 60
# Printer browsing and discovery
Browsing On # Enable printer sharing
BrowseLocalProtocols dnssd # Advertise printers using Bonjour
# Authentication and web interface
DefaultAuthType Basic # Basic = username/password
WebInterface Yes # CUPS web interface
# Global access settings
<Location />
Order allow,deny # Allow access to everyone
Allow all
</Location>
# Admin access settings
<Location /admin>
Order allow,deny # Require authentication
Allow all
AuthType Basic
Require user @SYSTEM # Restrict to system adminis
</Location>
# Access to configuration files
<Location /admin/conf>
Order allow,deny
Allow all
AuthType Basic
Require user @SYSTEM
</Location>
# Job management settings
<Location /jobs>
AuthType Basic
Require user @SYSTEM
Order allow,deny
Allow all
</Location>
# Printer access settings
<Location /printers>
Order allow,deny # All clients can print
Allow all
</Location>
<Location /admin/log>
Order allow,deny
Allow all
AuthType Basicaccess
Require user @SYSTEM
</Location>
重新启动 CUPS 以应用更改。
sudo systemctl restart cups
最后,确认 CUPS 已启动并正常运行。
sudo systemctl status cups
配置 Samba 以实现网络打印机共享
接下来,我们需要将 Samba 配置为充当 CUPS 服务器和客户端设备之间的中介。编辑您的 smb.conf 文件:
sudo vim /etc/samba/smb.conf
将以下行添加到 [global] 部分。
load printers = yes
printing = cups
printcap name = cups
添加以下 [printers] 部分和打印机驱动程序 [print$] 部分。
[printers]
comment = All Printers
path = /var/spool/samba
printable = yes
guest ok = yes
browseable = no
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = no
guest ok = yes
您的 smb.conf 将类似于以下内容:
[global]
workgroup = DOGHOUSE
server string = Samba Server %v
netbios name = SERVER
security = user
map to guest = Bad User
load printers = yes
printing = cups
printcap name = cups
[Home]
path = /home/username
browseable = yes
writable = yes
valid users = user
create mask = 0700
directory mask = 0700
[printers]
comment = All Printers
path = /var/spool/samba
printable = yes
guest ok = yes
browseable = no
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = no
guest ok = yes
您可以输入 testparm 命令来测试您的配置。
如果一切顺利,重新启动 Samba:
sudo systemctl restart smbd nmbd
最后,确认 Samba 已启动并正常运行
sudo systemctl status smbd nmbd
共享您的打印机
我们快完成了!是时候登录您的新 CUPS 服务器,然后添加并共享您的打印机了。
将 Web 浏览器指向您的服务器 IP 或主机名,例如 192.168.1.100:631 或主机名:631。使用您之前添加的 CUPS 配置,系统应该提示您输入凭据以访问 Web 界面。
选择顶行的“管理”选项卡,
选择“添加打印机”,然后服务器应该已经识别您的硬件并将其列为本地打印机。您可以更改打印机的详细信息,但不要忘记在进入驱动程序选择屏幕之前选择“共享此打印机”选项。选择您的打印机制造商、适合您打印机型号的驱动程序,然后选择“添加打印机”。
我们可以谈谈司机吗?
CUPS 使用 PostScript 打印机描述 (PPD) 文件,该文件描述特定打印机型号的功能和特性,但我们将其称为驱动程序。
如果您没有找到您的打印机,您可以尝试通用(Generic PostScript)驱动程序。如果您环顾四周,您可能会在打印机制造商的网站上找到 PPD 文件,然后您可以使用“提供 PPD 文件”选项将其从计算机上传到 CUPS 服务器。
也就是说,对于 Brother 打印机,您可能无法使用 Brother 自己的驱动程序获得最佳结果。我发现 brlaser 驱动程序比 Brother 自己的驱动程序产生更好的结果。可以使用 Printer-driver-brlaser 软件包将 brlaser 驱动程序轻松添加到您的系统中,例如:sudo apt install Printer-driver-brlaser。
第一次就做到这一点可能很棘手,并且在提交第一个打印作业之前您不会知道它是否正确。如果您的打印输出被损坏或乱码,那么您可以在 Web 界面中修改您的打印机并尝试不同的驱动程序。
设置您的设备
此时,网络客户端应该可以访问您的 CUPS 打印机,是时候将您的网络设备连接到共享打印机了。
视窗
打开“设置”,然后选择“蓝牙和设备”>“打印机和扫描仪”。要添加打印机,请选择“添加设备”,等待 Windows 扫描找到它,然后选择“添加设备”。
macOS
打开系统设置,然后选择“添加打印机、扫描仪或传真”。在“添加打印机”屏幕上,选择您的打印机,然后选择“添加”。
安卓
Android 的处理方式略有不同,您可能需要安装与打印机制造商相对应的打印服务。打开“设置”,然后打开“更多连接选项”>“打印”>“添加服务”。这将打开 Play 商店,并允许您为打印机制造商选择打印服务(Brother 打印服务不适合我,但 Mopria 打印服务工作完美)。
一旦打印服务找到共享打印机,我只需选择它,然后“打印测试页”以确保它正常工作。
iPhone
在 iPhone 和其他 iOS 设备上,打印非常简单,几乎不需要任何设置。只需点击您正在使用的任何应用程序中的共享图标,然后从菜单中选择“打印”即可。您应该看到您的打印机,但如果没有,只需选择“打印机”字段、您的打印机,然后选择“打印”。
恭喜!您已成功将旧 PC 转变为可靠的 Linux 打印服务器,使跨不同平台的打印机共享变得轻松、无缝。此设置精简、高效且节省时间,让您可以轻松地从任何设备进行打印。享受您在打印环境中获得的简单性和控制力!