-
Notifications
You must be signed in to change notification settings - Fork 99
Dev Docs
WIP - ALL LINKS IN THIS WIKI STRUCTURE ARE CURRENTLY BROKEN DURING WIKI MIGRATION
THESE ARE COMMUNITY 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) 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 # This Page
Dev-Docs-Index # Navigation index and table of contents
Dev-Docs-API-Libatalk # Core library functions and interfaces
Dev-Docs-Arch-Overview # High-level system architecture
Dev-Docs-Arch-DataFlow # Component interactions and data flow
Dev-Docs-Arch-Protocols # Network protocol implementation
Dev-Docs-Components-AFPD # AFP daemon implementation
Dev-Docs-Components-Appletalk # AppleTalk protocol support
Dev-Docs-Components-Auth # User Authentication Modules (UAM)
Dev-Docs-Components-CNID # CNID database system
Dev-Docs-Components-Netatalk # Master daemon and service coordination
Dev-Docs-Config-Setup # Initial setup and configuration
Dev-Docs-Config-Volumes # Volume configuration reference
Dev-Docs-Dev-Guidelines # Coding standards and development practices
Dev-Docs-Performance-Network # High-performance network tuning
Dev-Docs-Troubleshooting # 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/
-
Installation: See
deployment/platforms.mdfor platform-specific instructions Build System:meson.build,meson_options.txt,contrib/shell_utils/ -
Configuration: Review
configuration/setup.mdfor initial setup Config Parsing:libatalk/iniparser/,etc/afpd/afp_config.c,etc/netatalk/netatalk.c -
Development: Check
development/guidelines.mdfor contribution guidelines Development Tools:test/,.github/,include/atalk/standards.h
-
Version: 4.3.0dev (active development) Version Definition:
meson.build,include/atalk/version.h -
License: GNU General Public License v2 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/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