-
Notifications
You must be signed in to change notification settings - Fork 101
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 (https://netatalk.io/manual/en/) 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.
- Navigation index and table of contents
- Core library functions and interfaces
- High-level system architecture
- Component interactions and data flow
- Network protocol implementation
- AFP daemon implementation
- AppleTalk protocol support
- User Authentication Modules (UAM)
- CNID database system
- Master daemon and service coordination
- Initial setup and configuration
- Volume configuration reference
- Coding standards and development practices
- High-performance network tuning
- Frequently encountered problems and solutions
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/ -
Repository: https://github.com/Netatalk/netatalk
-
Website: https://netatalk.io
-
Documentation: https://netatalk.io/manual/en/ Doc Sources:
doc/manual/,doc/manpages/,doc/developer/,README.md
- GitHub Discussions: https://github.com/Netatalk/netatalk/discussions
- Mailing Lists: netatalk-admins, netatalk-devel
- Community Forums: TinkerDifferent, 68kmla, E-Maculation
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 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