Solved: FreeBSD as print server w/CUPS + samba + apsfilter

From: Mike (addymin_at_pacbell.net)
Date: 05/25/04

  • Next message: Rob: "Re: Solved: FreeBSD as print server w/CUPS + samba + apsfilter"
    Date: Mon, 24 May 2004 18:56:03 -0700
    To: freebsd-questions <freebsd-questions@freebsd.org>, Michal Pasternak <michal@pasternak.w.lub.pl>, Pavel Duda <element@email.cz>
    
    

    Greetings:

    This post is a result of 2 days of thrashing trying to get FreeBSD (4.9)
    to act as a print server to Win2K/XP clients. I have included links to
    a how-to that I wrote that includes a full install and configuration of
    CUPS and Samba so that local (connected to server) printers print
    locally, and so that that local printer(s) can then be shared (served)
    as network printer amongst Windows 2k/XP clients.

    My original post on 5/21/2004 "Network printing question: apsfilter +
    samba over Win2k network" contained what I had accomplished, so far.

    So... To make a long story short

    I have apsfilter and CUPS and Samba installed and working.

    The server prints to it's local (via parallel port) printer using either
    apsfilter or cups.

    Serving that locally connected printer over a Windows network (to
    Win2k/XP clients) is accomplished with CUPS and Samba.

    Here is the long version of the how-to:
    http://www.ajl-tech.com/index.php?option=com_frontpage&Itemid=1
    or
    http://www.ajl-tech.com/index.php?option=content&task=view&id=16&Itemid=31

    Here is the short version, illustrated as general procedure (with in
    between steps removed). This how-to assumes that the printer in
    question has a good driver available at www.linuxprinting.org.

    Step 1. Install CUPS via ports and other apps + drivers

    /usr/ports/print/cups
    /usr/ports/print/gimp-print
    /usr/ports/print/hpijs
    /usr/ports/print/ghostscript-gnu
    /usr/ports/lang/perl5

    For each of the above: "make install clean"

    Step 2. Get the proper driver (.ppd file) from www.linuxprinting.org and
      copy it to the "/usr/local/share/cups/model" directory. For example:

    chown root:wheel HP-LaserJet_4M-postscript.ppd
    chmod 644 HP-LaserJet_4M-postscript.ppd
    mv HP-LaserJet_4M-postscript.ppd /usr/local/share/cups/model

    Step 3. Get Foomatic. You'll need the following 2 files:

    http://www.linuxprinting.org/foomatic-rip
    http://www.linuxprinting.org/foomatic-gswrapper

    These files need to be moved to the right location with the right modes
    applied:

    mv foomatic-rip /usr/local/bin
    mv foomatic-gswrapper /usr/local/bin
    cd /usr/local/bin
    chmod 755 foomatic-rip foomatic-gswrapper

    Step 4. Make sure Foomatic can be reached by CUPS:

    Place a link in CUPS's "filter" directory at
    /usr/local/libexec/cups/filter: (note: the following is 1 line)

    ln -s /usr/local/bin/foomatic-rip
    /usr/local/libexec/cups/filter/foomatic-rip

    Important!!

    CUPS will have installed its own versions of the commands "LP" "lpr"
    "lpq" "lprm" in the [/usr/local/bin] directory. While BSD installs its
    own (original) versions of these commands in [/usr/bin]. For sharing
    this a printer to others across a network via Samba, we'll need to make
    sure to reference the CUPS version of “lp” “lpr” “lpq” and “lprm” (in
    /usr/local/bin).

    Step 5. Configure the printer

    Start CUPS: "/usr/local/etc/rc.d/cups.sh start"
    Bring up CUPS via browser: "http://localhost:631"

    Supply "Name" "Location" and "Description". Then supply the printer
    model (the downloaded .ppd driver should be there as a choice).

    Print a test page. Congrats you should have local printing.

    Step 6. Configure CUPS for network print service

    Edit the "cupsd.conf" file. Make the following configs:

    Set your "broadcast" option for the LAN by setting:
    "BrowseAddress @LOCAL"

    Set local access privileges, find the <Location /> section and:
    <Location />
    Order Deny,Allow
    Deny From All
    Allow From 127.0.0.1
    Allow From 192.168.1.*
    </Location>

    This would allow anyone within the 192.168.1.* network to have access to
    CUPS.

    Step 7. Install Samba via ports & Configure Samba

    cd /usr/ports/net/samba
    su
    Password: ********
    make install clean

    Start Samba: "/usr/local/etc/rc.d/samba.sh start"

    Note: make sure these ports are open on the server's firewall (for
    samba): port 139 (tcp), port 138 (udp), and port 137 (udp)

    Modify the smb.conf file: Here is my working smb.conf file.

    global]
             workgroup = workgroup
             printcap name = cups
             log file = /var/log/log.%m
             max log size = 50
             socket options = TCP_NODELAY
             netbios name = mango
             dns proxy = no
             load printers = yes
             security = share
             os level = 20
             printing = cups
             encrypt passwords = yes
             server string = Samba Server
    [hp4m]
             printable = yes
             comment = hp4m for local network
             printer = hp4m
             use client driver = yes
             lprm command = /usr/local/bin/lprm P%p %j
             print command = /usr/local/bin/lp -d %p -o raw %s; rm -f %s
             lpq command = /usr/local/bin/lpq -P%p
             path = /var/spool/samba
             writeable = yes
             public = yes

    Make sure that the “guest” user (nobody) is given access to the
    /var/spool/samba directory.

    Also notice that the “lp”, “lprm”, and the “print” command reference the
    path to the CUPS versions of those commands. I found this to be
    important. Referencing the FreeBSD (default) print commands will not get
    the job done!

    Another important entry is the “use client driver = yes”. If you don't
    include this setting, Windows 2000/XP clients will be able to print to
    the network hosted printer (HP4M), but they will complain about the
    “printer not being accessible”.

    Well I hope this how-to is useful and will help others who have plans of
    replacing Windows 2000 servers with something "a little more durable".

    I'm tired now but I've got a working print server. It's time to buy
    beer and contemplate the universe...

    Regards,
    Michael Chinn

    _______________________________________________
    freebsd-questions@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-questions
    To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org"


  • Next message: Rob: "Re: Solved: FreeBSD as print server w/CUPS + samba + apsfilter"

    Relevant Pages

    • RE: Printing from Win9x clients stops
      ... > and make sure this software does not interfere with SBS Server. ... > clients, please disable it and try again. ... Create a local printer and redirect the port to the network server. ...
      (microsoft.public.windows.server.sbs)
    • Re: ISA Server & a WiFi Hotspot (some DHCP for good measure too)
      ... ISA2k4 is currently not supported on SBS ... To review - you have LAN clients that you want to have ... card for your server. ... > network with 5 client computers. ...
      (microsoft.public.windows.server.sbs)
    • RE: Users Cant Access Documents on Server
      ... Thanks for using the SBS newsgroup. ... As well as we know, if a workstation would not access network shares, then ... Leave the Default Gateway of the internal NIC blank of the server box. ... Clients That Require SMB Signing ...
      (microsoft.public.windows.server.sbs)
    • [HPADM] RE: Mapping Samba Share to XP
      ... "The mapped network drive could not be created because the following error occurred: The remote computer is not available." ... Is there anything I need to change in the configuration on the CIFS server? ... I am unable to map to the Windows XP clients on the 158 subnet still, but this is due to the firewall, so if someone knows how I can make that happen, please let me know? ... Mapping Samba Share to XP ...
      (HP-UX-Admin)
    • ie 6.0
      ... > laptop moves from one network to another, its IP address lease might need ... > request might go to a different server that will not extend the lease ... > for a period of time, it will not provide the time to requesting clients. ...
      (microsoft.public.windows.inetexplorer.ie6.browser)