A React Native mobile application for monitoring and managing your Unraid server. Built with TypeScript and GraphQL.
- Real-time server status monitoring
- Array information and disk management
- Docker container status and management
- System resource monitoring (CPU, RAM, disk usage)
- Secure API key authentication
- Auto-refresh functionality
- Pull-to-refresh support
- Node.js and npm
- React Native CLI
- For iOS: Xcode and CocoaPods
- For Android: Android Studio and SDK
- An Unraid server with API access enabled
npm installcd ios
pod install
cd ..# Start Metro bundler
npm start
# In a new terminal, run the app
npm run ios # for iOS
npm run android # for Android- Open your Unraid server web interface
- Navigate to Settings → Management Access → API Keys
- Click "Add Key" and configure:
- Name: e.g., "Mobile App"
- Description: e.g., "React Native monitoring app"
- Permissions: Grant read/write access as needed
- Click Generate and copy the API key (save it securely!)
- Launch the app
- Enter your server URL:
- Local:
http://192.168.1.100 - Remote:
https://your-server.unraid.net - Custom domain:
https://unraid.yourdomain.com
- Local:
- Paste your API key
- Tap Connect
The app uses GraphQL with the /graphql endpoint and authenticates via the x-api-key header.
UnraidMobile/
├── src/
│ ├── api/
│ │ └── unraidApi.ts # GraphQL API client
│ ├── components/
│ │ ├── ArrayCard.tsx # Array information display
│ │ ├── ServerCard.tsx # Server status display
│ │ └── DockerCard.tsx # Docker container display
│ ├── screens/
│ │ ├── SetupScreen.tsx # Server configuration
│ │ └── DashboardScreen.tsx # Main dashboard
│ ├── types/
│ │ └── index.ts # TypeScript definitions
│ └── generated/ # GraphQL codegen output
├── App.tsx # Root component
└── codegen.ts # GraphQL code generation config
The project uses GraphQL Code Generator for type-safe API calls:
npm run codegenThis generates TypeScript types and React hooks from your GraphQL schema and queries.
npm start- Start Metro bundlernpm run android- Run on Androidnpm run ios- Run on iOSnpm test- Run testsnpm run lint- Run ESLintnpm run codegen- Generate GraphQL types
When the iOS simulator is open:
- ⌘ + Shift + H - Home button
- ⌘ + K - Toggle keyboard
- ⌘ + R - Reload app
- ⌘ + D - Open developer menu
"Authentication failed"
- Verify your API key is correct
- Check if the key has been revoked
- Generate a new API key from Unraid settings
"Access forbidden"
- Your API key lacks necessary permissions
- Edit the key in Unraid and grant required permissions
"Server not found"
- Verify your server URL format
- Ensure the server is accessible from your device
- Check network connectivity
iOS Pod Install Failed
cd ios
pod deintegrate
pod install
cd ..Metro Bundler Issues
npm start -- --reset-cacheClean Rebuild
# Clear dependencies
rm -rf node_modules
npm install
# iOS clean
cd ios && rm -rf build && cd ..- API keys are stored securely using AsyncStorage
- Keys are transmitted via headers (not URLs)
- HTTPS is recommended for production
- API keys can be revoked anytime from Unraid settings
This is a personal project but contributions are welcome. Please ensure:
- Code follows existing style (ESLint)
- TypeScript types are properly defined
- GraphQL queries are in
src/api/queries.ts - Run
npm run codegenafter modifying queries
MIT