-
Notifications
You must be signed in to change notification settings - Fork 100
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.md
for platform-specific instructions Build System:meson.build
,meson_options.txt
,contrib/shell_utils/
-
Configuration: Review
configuration/setup.md
for initial setup Config Parsing:libatalk/iniparser/
,etc/afpd/afp_config.c
,etc/netatalk/netatalk.c
-
Development: Check
development/guidelines.md
for 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
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
Technical Docs
- CatalogSearch
- Kerberos
- Special Files and Folders
- Spotlight
- AppleTalk Kernel Module
- Print Server
- MacIP Gateway
- MySQL CNID Backend
Development