PRIVACY POLICY
Privacy Policy
Updated September 20, 2026.
FerryPorts is developed by 郭耀铭 (Guo Yaoming) and connects to frps servers you choose. This policy covers the app and this support website.
- No ads or usage tracking
No FerryPorts account is required. The app has no advertising, advertising tracking, or usage analytics service.
- Settings and history stay on your device
Server configuration and connection history are encrypted locally. The app does not automatically upload diagnostic logs, location, or connection history to the developer. Connection protocols and features you enable can transmit configuration and other data as described below.
- Location is your choice
With permission, the app labels active connections with approximate locations. Each connection keeps only its latest location, not a movement trail. You can turn off location access in iOS Settings.
- Connecting requires network access
Your selected servers receive data needed for connection setup, authentication, and proxy traffic. Apple Maps and our website host, GitHub, also process request information needed to provide their services.
- You can delete local data
You can delete connection records or profiles. Delete profiles in the app to remove their configuration and keys; uninstalling alone may leave Keychain items behind. Local deletion does not remove server logs.
How your data is handled
Expand a heading for storage details, third-party services, and deletion limits.
On-device data
Server settings, authentication information, and proxy configuration are stored in AES-GCM encrypted documents. Document keys are stored in device-bound system Keychain items. Profile names, enabled states, and document identifiers are stored in local app preferences; the app does not insert authentication passwords into profile names. Encrypted configuration and connection-history files are excluded from system backups.
Current-session diagnostic logs are kept in a bounded memory buffer for display in the app. They may contain server addresses, proxy names, timestamps, and errors. The app does not automatically upload these logs to the developer. If you copy or share log content, the recipient receives the content you provide.
Location and connection history
With your permission, while a connection is starting or running, the app uses approximate location to label connection records. Each session keeps only its latest location, not a movement trail, altitude, speed, or heading. Each profile retains up to 50 recent records, including start time, latest activity time, and outcome.
These records are encrypted locally. The app itself does not upload location or connection history to the developer or frps server. Maps use Apple MapKit. Requests and processing required by Apple's map service are governed by Apple's Privacy Policy; maps are not promised to work entirely offline.
You can change or revoke location access in iOS Settings. Background location labels active connection records and may also allow a connection to run longer in the background. Permission changes, force quitting, or system termination may interrupt this behavior.
Your selected servers
Enabling a profile sends data required for connection setup, authentication, and proxy negotiation to your selected frps server. The frp login protocol includes the hostname returned by the operating system, operating-system type, processor architecture, frp version, login timestamp, session identifier, and configured user name, client identifier, and metadata. The hostname returned by iOS may be generic. These are connection-protocol fields, not a FerryPorts advertising identifier. The server also receives authentication-protocol data and proxy settings needed to provide the configured service.
Your server and communication endpoints can receive IP addresses, connection times, and configured proxy traffic. Depending on the features you enable, DNS providers receive domain lookups; an OIDC authentication provider receives configured client credentials and token-request parameters; and XTCP NAT traversal contacts a STUN service to discover network addresses. frp defaults to stun.easyvoip.com:3478 when no alternative STUN server is configured; ordinary proxy connections do not require this XTCP discovery step. Proxy, authentication, and other endpoints can also be selected through your configuration.
Imported certificates and private keys are stored as plaintext PEM in the app container, protected by iOS Data Protection after first unlock and excluded from iCloud and Finder backups. They do not use the application-level encryption applied to profile documents. Delete these files in More → Certificates and Keys; deleting a profile does not automatically remove certificates that other profiles may share. You manage external originals and copies.
Configured certificate files, token files, and static-serving directories are limited to the app container. Paths and symbolic links that escape that boundary are rejected. Custom DNS queries are handled by the selected DNS service.
If you enable the static_file plugin, requests through that service can retrieve readable files in its configured directory, including directory listings and file metadata such as size and modification time. HTTP responses may include a Last-Modified header. This is user-configured file serving, not diagnostic analytics. If you enable frp's management web server, reachable clients may obtain connection status and configuration information subject to the authentication and network settings you choose.
Recipients, encryption, log retention, and processing depend on your server, services, and configuration. Only connect to trusted, authorized servers and consult their operators' privacy policies. Local storage does not mean no network transmission; network communication is central to the app's functionality.
What remains after you delete your data?
You can delete individual connection records or clear history. Deleting a profile removes its encrypted configuration document, connection history, and document key. Uninstalling normally removes the app's local data container, but iOS Keychain items may remain. Delete profiles inside the app first when you want to remove their keys. Local deletion does not erase server logs, copies you saved elsewhere, or content you posted to another platform.
What information is used when you visit this website or contact us?
This website is hosted on GitHub Pages, with no added analytics scripts, ads, or tracking cookies. GitHub may process IP addresses and technical request information to provide and protect hosting, under the GitHub Privacy Statement. If you contact us through GitHub, GitHub and maintainers process the content you provide. Public issues are visible to everyone. You can also email eric_kwoc@icloud.com; the author receives and handles your feedback without displaying it publicly. Relevant email providers handle email delivery and storage. Do not post credentials, full configurations, or screenshots containing personal locations.
Contact and policy updates
For privacy questions or data requests, email eric_kwoc@icloud.com or visit the support page. Do not send credentials, full configurations, or screenshots containing personal locations.
Policy changes will be reflected on this page with an updated date. Material changes will also be communicated where appropriate.