-
Notifications
You must be signed in to change notification settings - Fork 100
Dev Docs
This wiki branch contains documentation and knowledge about the Netatalk project for developers - a Free and Open Source implementation of the Apple Filing Protocol (AFP).
These developer docs are intended to supplement the main user docs to simplify and encourage contributions to Netatalk.
These developer docs include many Mermaid diagrams to make understanding easier and ease the learning curve (hopefully).
Netatalk is a robust, lightweight and fast AFP 3.4 server implementation that enables Unix/Linux systems to act as native file servers for Mac clients, providing seamless integration with macOS features like Time Machine, Spotlight, and Bonjour service discovery.
- Dev Docs Architecture Overview
- Dev Docs Netatalk Configuration
- Dev Docs Netatalk Controller Daemon
- Dev Docs AFP Daemon
- Dev Docs Libatalk API
- Dev Docs Data Flow
- Dev Docs Caching Architecture
- Dev Docs Network Protocols
- Dev Docs AppleTalk Networking
- Dev Docs User Authentication
- Dev Docs CNID Database System
- Dev Docs Shared Volumes
- Dev Docs Performance Tuning
- Dev Docs Troubleshooting
- Dev Docs Virtual Icon
The main Netatalk implementation resides in these key directories:
-
libatalk/- Core AFP library implementation and utility functions -
etc/afpd/- AFP daemon (afpd) source code and protocol handlers -
etc/netatalk/- Master daemon and service management -
etc/cnid_dbd/- CNID database daemon for file ID management -
etc/uams/- User Authentication Modules (UAM) implementations -
include/atalk/- Public header files and API definitions -
meson.build- Build system configuration and dependency management -
test/- Test suite and benchmarking utilities -
contrib/- Additional scripts and integration tools
-
AFP 3.4 Protocol Support - Full implementation with modern macOS compatibility Implementation:
etc/afpd/afp_*.c,libatalk/dsi/,include/atalk/afp.h -
AppleTalk Legacy Support - Maintains compatibility with classic Mac systems Implementation:
libatalk/atp/,libatalk/asp/,include/atalk/atp.h,include/atalk/asp.h -
Spotlight Integration - Search functionality via GNOME Tracker/TinySPARQL Implementation:
etc/afpd/spotlight*.c,libatalk/util/server_ipc.c -
Time Machine Support - Native macOS backup destination Implementation:
etc/afpd/volume.c,etc/afpd/enumerate.c,etc/afpd/afp_options.c -
Advanced Authentication - Multiple UAM modules including DHX, DHX2, PAM, Kerberos Implementation:
etc/uams/,etc/afpd/auth.c,include/atalk/uam.h -
High Performance - Optimized for large file transfers and concurrent connections Implementation:
libatalk/dsi/dsi_tcp.c,etc/afpd/fork.c,etc/afpd/file.c -
Cross-Platform - Supports Linux, BSD variants, macOS, and Solaris Implementation:
meson.build,include/atalk/compat.h,libatalk/compat/
-
License: GNU General Public License v2 with portions BSD or MIT License Files:
COPYING,COPYRIGHT, header comments in source files -
Language: C11 with GCC extensions Standards Compliance:
meson.build(c_std setting) -
Build System: Meson (migrated from Autotools) Build Configuration:
meson.build,meson_options.txt,subprojects/ -
Documentation: Markdown with GitHub extensions, code comments in Doxygen format Doc Sources:
doc/manual/,doc/manpages/,doc/developer/,README.md
Resources
- Getting Started
- FAQ
- Troubleshooting
- Connect to AFP Server
- Webmin Module
- Benchmarks
- Interoperability with Samba
OS Specific Guides
- Installing Netatalk on Alpine Linux
- Installing Netatalk on Debian Linux
- Installing Netatalk on Fedora Linux
- Installing Netatalk on FreeBSD
- Installing Netatalk on macOS
- Installing Netatalk on NetBSD
- Installing Netatalk on OmniOS
- Installing Netatalk on OpenBSD
- Installing Netatalk on OpenIndiana
- Installing Netatalk on openSUSE
- Installing Netatalk on Raspberry Pi OS
- Installing Netatalk on Solaris
- Installing Netatalk on Ubuntu
Tech Notes
- Capturing AFP network traffic
- Kerberos
- Special Files and Folders
- Spotlight
- MySQL CNID Backend
- Slow AFP read performance
- Limiting Time Machine volumes
- Netatalk and ZFS nbmand property
Retro AFP
Development