LinkGen is a secure, one-time markdown document sharing application with file upload support and admin management. This guide covers deployment to Windows IIS.
# Build the deployment package
npm run build:iis
# Or use the convenience script
./deploy-iis.sh- Windows Server with IIS installed
- Node.js 18+ installed
- iisnode module for IIS (Download)
- Node.js 18+
- npm
npm run build:iisThis creates a deploy/ folder with everything needed for IIS.
Upload the entire deploy/ folder contents to your IIS website directory (e.g., C:\inetpub\wwwroot\linkgen\)
On the server, open Command Prompt in the deployment directory:
npm install --productionOr simply run the included install.bat file.
-
Create Website/Application
- Open IIS Manager
- Create new website or application
- Point to your deployment directory
-
Set Application Pool
- Set Application Pool to "No Managed Code"
- Ensure Application Pool Identity has read/write permissions
-
Environment Variables (Optional)
ADMIN_PASSWORD: Your admin password (default: admin123)JWT_SECRET: Secure random string for JWT tokensNODE_ENV: production
- Browse to your website URL
- Test document creation and sharing
- Access admin panel at
/admin
- ✅ One-time markdown document sharing
- ✅ Configurable view limits (1-100 views)
- ✅ Time-based expiry (1 hour to 1 week)
- ✅ File attachments (up to 10MB each)
- ✅ HTML-to-markdown conversion
- ✅ Material Design 3 interface
- ✅ Secure admin authentication
- ✅ Document management dashboard
- ✅ View active documents and statistics
- ✅ JWT-based session management
- ✅ Temporary storage (data lost on restart)
- ✅ Configurable admin passwords
- ✅ Automatic document cleanup
- ✅ File size limits and validation
Set these in IIS for your application:
ADMIN_PASSWORD=your-secure-password
JWT_SECRET=your-jwt-secret-key
NODE_ENV=production
PORT=80
- Maximum file size: 10MB per file
- Multiple files supported per document
- Common file types supported (images, documents, etc.)
- Verify Node.js is installed and in system PATH
- Check that iisnode is properly installed
- Ensure Application Pool is set to "No Managed Code"
- Review IIS logs and Node.js error logs
- Give IIS Application Pool identity Full Control to deployment folder
- Check Windows Event Logs for detailed errors
- Ensure web.config is properly configured
- Check IIS request size limits
- Verify temp directory permissions
- Review upload size restrictions in web.config
- Enable gzip compression in IIS
- Configure static file caching
- Monitor memory usage (data is stored in-memory)
- Visit the website
- Enter your markdown content
- Optionally add a title
- Attach files if needed
- Set view limit and expiry time
- Generate shareable link
- Go to
/admin - Enter admin password (default: admin123)
- View active documents
- Monitor system usage
POST /api/upload- Create documentGET /api/document/:id- Retrieve documentPOST /api/upload-file- Upload fileGET /api/attachment/:id- Download attachmentPOST /api/admin/login- Admin loginGET /api/admin/documents- Admin dashboard
- Always change the default admin password
- Use HTTPS in production
- Set a secure JWT_SECRET
- Consider reverse proxy for additional security
- Monitor for unusual access patterns
- All data is stored in memory (temporary)
- Data is lost when the application restarts
- No persistent database required
- Automatic cleanup of expired documents
- Icons not showing: Ensure Material Icons font is loaded
- File uploads failing: Check file size limits and permissions
- Admin login issues: Verify password and JWT secret configuration
- 404 errors: Check IIS URL rewriting configuration
- IIS logs:
C:\inetpub\logs\LogFiles\ - Node.js logs: Check IIS application event logs
- Application logs: Console output in IIS logs
To update the application:
- Build new deployment package
- Stop IIS application
- Replace files (keep web.config if customized)
- Restart IIS application
- Endpoint:
/api/test - Returns server status and timestamp
- View active document count
- Monitor memory usage
- Track document expiry
LinkGen - Secure, temporary document sharing made simple.
For technical support or feature requests, please refer to the project documentation.