• Get Review Board
  • What's New
  • Products
  • Review Board Code review, image review, and document review
  • Documentation
  • Release Notes
  • Power Pack Enterprise integrations, reports, and enhanced document review
  • Try for 60 Days
  • Purchase
  • RBCommons Review Board as a Service, hosted by us
  • Pricing
  • RBTools Command line tools and Python API for Review Board
  • Documentation
  • Release Notes
  • Review Bot Automated code review, connecting tools you already use
  • Documentation
  • Release Notes
  • RB Gateway Manage Git and Mercurial repositories in your network
  • Documentation
  • Release Notes
  • Learn and Explore
  • What is Code Review?
  • Documentation
  • Frequently Asked Questions
  • Support Options
  • Third-Party Integrations
  • Demo
  • Review Board RBTools Power Pack Review Bot Djblets RB Gateway
    1. Review Board 5.0
    2. Version 7.x
    3. Version 6.x
    4. Version 5.0
    5. Version 4.0
    6. Version 3.0
    7. Version 2.5
    8. Version 2.0
    9. Version 1.7
    10. Version 1.6
    11. Version 1.5
    12. Version 1.0
    13. Administration Guide
    14. Installation
    15. Creating a Review Board Site
  • Home
  • Users Guide
  • Getting Started
  • Introduction
  • What is Code Review?
  • Review Board Workflows
  • Account Settings
  • Dashboard
  • Working with Review Requests
  • Overview
  • Creating Review Requests
  • Editing Fields
  • Uploading Diffs
  • Uploading File Attachments
  • Publishing Review Requests
  • Closing Review Requests
  • Reviewing
  • Reviews and Comments
  • Review Draft Banner
  • Issue Tracking
  • Reviewing Code (Diffs)
  • Reviewing File Attachments
  • Reviewing Images
  • Reviewing Markdown Files
  • Reviewing Text Files
  • Creating and Editing Reviews
  • Publishing Reviews
  • Approving Changes (Ship It!)
  • Replying to Comments
  • Automated Code Reviews
  • Searching
  • Quick Search
  • Full-Text Search
  • Using Markdown
  • Administration Guide
  • Installation
  • Installing on Linux
  • Installing on Mac OS X Server
  • Installing on Windows
  • Installing with Docker
  • Installing Development Releases
  • Creating a Review Board Site
  • Upgrading
  • Upgrading Review Board
  • Upgrading Review Board Sites
  • Optimization
  • Optimizing and Scaling Review Board
  • Administration UI
  • Overview of the Administration UI
  • Administrator Dashboard
  • Database Management
  • Configuration
  • Site Settings
  • General Settings
  • Authentication Settings
  • Avatar Services Settings
  • E-Mail Settings
  • Diff Viewer Settings
  • Logging Settings
  • SSH Settings
  • File Storage Settings
  • User Privacy Settings
  • Search Settings
  • Access Control
  • Working with E-Mail
  • Default Reviewers
  • Permission Groups
  • Repositories
  • Bazaar Repositories
  • CVS Repositories
  • Git Repositories
  • HCL VersionVault and IBM ClearCase
  • Mercurial Repositories
  • Perforce Repositories
  • Subversion Repositories
  • Assembla Repositories
  • AWS CodeCommit Repositories
  • Beanstalk Repositories
  • Bitbucket Repositories
  • Bitbucket Server Repositories
  • Codebase HQ Repositories
  • Fedora Hosted Repositories
  • Gerrit Repositories
  • GitHub Repositories
  • GitHub Enterprise Repositories
  • GitLab Repositories
  • Gitorious Repositories
  • Cliosoft SOS Repositories
  • SourceForge Repositories
  • Unfuddle STACK Repositories
  • VisualStudio.com Repositories
  • Review Groups
  • Users
  • WebHooks
  • Extensions
  • Integrations
  • Asana Integration
  • CircleCI Integration
  • Discord Integration
  • I Done This Integration
  • Jenkins CI Integration
  • Matrix Integration
  • Mattermost Integration
  • Slack Integration
  • Travis CI Integration
  • Trello Integration
  • Site Maintenance
  • The rb-site Tool
  • Advanced Management Commands
  • Web API Guide
  • Resource Tree
  • Resources
  • Root List Resource
  • Default Reviewer List Resource
  • Default Reviewer Resource
  • Extension List Resource
  • Extension Resource
  • Hosting Service Account List Resource
  • Hosting Service Account Resource
  • Remote Repository List Resource
  • Hosting Service List Resource
  • Hosting Service Resource
  • OAuth2 Applications List Resource
  • OAuth2 Applications Resource
  • OAuth2 Tokens List Resource
  • OAuth2 Tokens Resource
  • Repository List Resource
  • Repository Resource
  • Diff File Attachment List Resource
  • Repository Branches Resource
  • Repository Commits Resource
  • Repository Group List Resource
  • Repository Info Resource
  • Repository User List Resource
  • Review Group List Resource
  • Review Group Resource
  • Review Group User List Resource
  • Review Request List Resource
  • Review Request Resource
  • Change List Resource
  • Diff Context Resource
  • Diff List Resource
  • File Attachment List Resource
  • Review List Resource
  • Review Request Draft Resource
  • Review Request Last Update Resource
  • Screenshot List Resource
  • Status Update List Resource
  • Root Diff Comment List Resource
  • Root File Attachment Comment List Resource
  • Root General Comment List Resource
  • Root Review List Resource
  • Search Resource
  • Server Info Resource
  • Session Resource
  • User List Resource
  • User Resource
  • API Token List Resource
  • Archived Review Request List Resource
  • Muted Review Request List Resource
  • User File Attachment List Resource
  • Watched List Resource
  • Validation List Resource
  • Validate Diff List Resource
  • Validate Diff Commit List Resource
  • WebHook List Resource
  • WebHook Resource
  • Server Info Resource
  • Default Reviewer List Resource
  • Default Reviewer Resource
  • Default Reviewer Resource
  • Diff Context Resource
  • Diff List Resource
  • Diff Resource
  • Diff Commit List Resource
  • Diff Commit Resource
  • File Diff List Resource
  • File Diff Resource
  • Diff Resource
  • Diff Commit List Resource
  • Diff Commit Resource
  • File Diff List Resource
  • File Diff Resource
  • File Diff Comment List Resource
  • Original File Resource
  • Patched File Resource
  • Diff Commit List Resource
  • Diff Commit Resource
  • Diff Commit Resource
  • Diff File Attachment List Resource
  • Diff File Attachment Resource
  • Diff File Attachment Resource
  • Original File Resource
  • Patched File Resource
  • Extension List Resource
  • Extension Resource
  • Extension Resource
  • Hosting Service List Resource
  • Hosting Service Resource
  • Hosting Service Resource
  • Hosting Service Account List Resource
  • Hosting Service Account Resource
  • Remote Repository List Resource
  • Remote Repository Resource
  • Hosting Service Account Resource
  • Remote Repository List Resource
  • Remote Repository Resource
  • Remote Repository List Resource
  • Remote Repository Resource
  • Remote Repository Resource
  • OAuth2 Applications List Resource
  • OAuth2 Applications Resource
  • OAuth2 Applications Resource
  • OAuth2 Tokens List Resource
  • OAuth2 Tokens Resource
  • OAuth2 Tokens Resource
  • Repository List Resource
  • Repository Resource
  • Diff File Attachment List Resource
  • Diff File Attachment Resource
  • Repository Branches Resource
  • Repository Commits Resource
  • Repository Group List Resource
  • Repository Group Resource
  • Repository Info Resource
  • Repository User List Resource
  • Repository User Resource
  • Repository Resource
  • Diff File Attachment List Resource
  • Diff File Attachment Resource
  • Repository Branches Resource
  • Repository Commits Resource
  • Repository Group List Resource
  • Repository Group Resource
  • Repository Info Resource
  • Repository User List Resource
  • Repository User Resource
  • Repository Branches Resource
  • Repository Commits Resource
  • Repository Group List Resource
  • Repository Group Resource
  • Repository Group Resource
  • Repository Info Resource
  • Repository User List Resource
  • Repository User Resource
  • Repository User Resource
  • Review Group List Resource
  • Review Group Resource
  • Review Group User List Resource
  • Review Group User Resource
  • Review Group Resource
  • Review Group User List Resource
  • Review Group User Resource
  • Review Group User List Resource
  • Review Group User Resource
  • Review Group User Resource
  • Change List Resource
  • Change Resource
  • Change Resource
  • File Attachment List Resource
  • File Attachment Resource
  • File Attachment Comment List Resource
  • File Attachment Resource
  • File Attachment Comment List Resource
  • File Attachment Comment List Resource
  • File Diff List Resource
  • File Diff Resource
  • File Diff Comment List Resource
  • Original File Resource
  • Patched File Resource
  • File Diff Resource
  • File Diff Comment List Resource
  • Original File Resource
  • Patched File Resource
  • File Diff Comment List Resource
  • Review Request List Resource
  • Review Request Resource
  • Change List Resource
  • Change Resource
  • Diff Context Resource
  • Diff List Resource
  • Diff Resource
  • File Attachment List Resource
  • File Attachment Resource
  • Review List Resource
  • Review Resource
  • Review Draft Resource
  • Review Request Draft Resource
  • Draft Diff List Resource
  • Draft File Attachment List Resource
  • Draft Screenshot List Resource
  • Review Request Last Update Resource
  • Screenshot List Resource
  • Screenshot Resource
  • Status Update List Resource
  • Status Update Resource
  • Review Request Resource
  • Change List Resource
  • Change Resource
  • Diff Context Resource
  • Diff List Resource
  • Diff Resource
  • Diff Commit List Resource
  • File Diff List Resource
  • File Attachment List Resource
  • File Attachment Resource
  • File Attachment Comment List Resource
  • Review List Resource
  • Review Resource
  • Review Diff Comment List Resource
  • Review File Attachment Comment List Resource
  • Review General Comment List Resource
  • Review Reply List Resource
  • Review Screenshot Comment List Resource
  • Review Draft Resource
  • Review Request Draft Resource
  • Draft Diff List Resource
  • Draft Diff Resource
  • Draft File Attachment List Resource
  • Draft File Attachment Resource
  • Draft Screenshot List Resource
  • Draft Screenshot Resource
  • Review Request Last Update Resource
  • Screenshot List Resource
  • Screenshot Resource
  • Screenshot Comment List Resource
  • Status Update List Resource
  • Status Update Resource
  • Review Request Last Update Resource
  • Screenshot List Resource
  • Screenshot Resource
  • Screenshot Comment List Resource
  • Screenshot Resource
  • Screenshot Comment List Resource
  • Screenshot Comment List Resource
  • Draft Diff List Resource
  • Draft Diff Resource
  • Draft Diff Commit List Resource
  • Draft Diff Commit Resource
  • Draft File Diff List Resource
  • Draft File Diff Resource
  • Draft Diff Resource
  • Draft Diff Commit List Resource
  • Draft Diff Commit Resource
  • Draft File Diff List Resource
  • Draft File Diff Resource
  • Draft Original File Resource
  • Draft Patched File Resource
  • Draft Diff Commit List Resource
  • Draft Diff Commit Resource
  • Draft Diff Commit Resource
  • Draft File Diff List Resource
  • Draft File Diff Resource
  • Draft Original File Resource
  • Draft Patched File Resource
  • Draft File Diff Resource
  • Draft Original File Resource
  • Draft Patched File Resource
  • Draft File Attachment List Resource
  • Draft File Attachment Resource
  • Draft File Attachment Resource
  • Draft Original File Resource
  • Draft Patched File Resource
  • Draft Screenshot List Resource
  • Draft Screenshot Resource
  • Draft Screenshot Resource
  • Review Request Draft Resource
  • Draft Diff List Resource
  • Draft Diff Resource
  • Draft Diff Commit List Resource
  • Draft File Diff List Resource
  • Draft File Attachment List Resource
  • Draft File Attachment Resource
  • Draft Screenshot List Resource
  • Draft Screenshot Resource
  • Root Review List Resource
  • Root Diff Comment List Resource
  • Root File Attachment Comment List Resource
  • Root General Comment List Resource
  • Review List Resource
  • Review Resource
  • Review Diff Comment List Resource
  • Review Diff Comment Resource
  • Review File Attachment Comment List Resource
  • Review File Attachment Comment Resource
  • Review General Comment List Resource
  • Review General Comment Resource
  • Review Reply List Resource
  • Review Reply Resource
  • Review Reply Draft Resource
  • Review Screenshot Comment List Resource
  • Review Screenshot Comment Resource
  • Review Draft Resource
  • Review Resource
  • Review Diff Comment List Resource
  • Review Diff Comment Resource
  • Review File Attachment Comment List Resource
  • Review File Attachment Comment Resource
  • Review General Comment List Resource
  • Review General Comment Resource
  • Review Reply List Resource
  • Review Reply Resource
  • Review Reply Diff Comment List Resource
  • Review Reply File Attachment Comment List Resource
  • Review Reply General Comment List Resource
  • Review Reply Screenshot Comment List Resource
  • Review Reply Draft Resource
  • Review Screenshot Comment List Resource
  • Review Screenshot Comment Resource
  • Review Draft Resource
  • Review Diff Comment List Resource
  • Review Diff Comment Resource
  • Review Diff Comment Resource
  • Review File Attachment Comment List Resource
  • Review File Attachment Comment Resource
  • Review File Attachment Comment Resource
  • Review General Comment List Resource
  • Review General Comment Resource
  • Review General Comment Resource
  • Review Screenshot Comment List Resource
  • Review Screenshot Comment Resource
  • Review Screenshot Comment Resource
  • Review Reply Draft Resource
  • Review Reply List Resource
  • Review Reply Resource
  • Review Reply Diff Comment List Resource
  • Review Reply Diff Comment Resource
  • Review Reply File Attachment Comment List Resource
  • Review Reply File Attachment Comment Resource
  • Review Reply General Comment List Resource
  • Review Reply General Comment Resource
  • Review Reply Screenshot Comment List Resource
  • Review Reply Screenshot Comment Resource
  • Review Reply Draft Resource
  • Review Reply Resource
  • Review Reply Diff Comment List Resource
  • Review Reply Diff Comment Resource
  • Review Reply File Attachment Comment List Resource
  • Review Reply File Attachment Comment Resource
  • Review Reply General Comment List Resource
  • Review Reply General Comment Resource
  • Review Reply Screenshot Comment List Resource
  • Review Reply Screenshot Comment Resource
  • Review Reply Diff Comment List Resource
  • Review Reply Diff Comment Resource
  • Review Reply Diff Comment Resource
  • Review Reply File Attachment Comment List Resource
  • Review Reply File Attachment Comment Resource
  • Review Reply File Attachment Comment Resource
  • Review Reply General Comment List Resource
  • Review Reply General Comment Resource
  • Review Reply General Comment Resource
  • Review Reply Screenshot Comment List Resource
  • Review Reply Screenshot Comment Resource
  • Review Reply Screenshot Comment Resource
  • Search Resource
  • Status Update List Resource
  • Status Update Resource
  • Status Update Resource
  • API Token List Resource
  • API Token Resource
  • API Token Resource
  • Archived Review Request List Resource
  • Archived Review Request Resource
  • Archived Review Request Resource
  • Muted Review Request List Resource
  • Muted Review Request Resource
  • Muted Review Request Resource
  • Session Resource
  • User List Resource
  • User Resource
  • API Token List Resource
  • API Token Resource
  • Archived Review Request List Resource
  • Archived Review Request Resource
  • Muted Review Request List Resource
  • Muted Review Request Resource
  • User File Attachment List Resource
  • User File Attachment Resource
  • Watched List Resource
  • Watched Review Group List Resource
  • Watched Review Request List Resource
  • User Resource
  • API Token List Resource
  • API Token Resource
  • Archived Review Request List Resource
  • Archived Review Request Resource
  • Muted Review Request List Resource
  • Muted Review Request Resource
  • User File Attachment List Resource
  • User File Attachment Resource
  • Watched List Resource
  • Watched Review Group List Resource
  • Watched Review Group Resource
  • Watched Review Request List Resource
  • Watched Review Request Resource
  • User File Attachment List Resource
  • User File Attachment Resource
  • User File Attachment Resource
  • Watched Review Group List Resource
  • Watched Review Group Resource
  • Watched Review Group Resource
  • Watched Review Request List Resource
  • Watched Review Request Resource
  • Watched Review Request Resource
  • Watched List Resource
  • Watched Review Group List Resource
  • Watched Review Group Resource
  • Watched Review Request List Resource
  • Watched Review Request Resource
  • Validation List Resource
  • Validate Diff List Resource
  • Validate Diff Commit List Resource
  • Validate Diff List Resource
  • Validate Diff Commit List Resource
  • WebHook List Resource
  • WebHook Resource
  • WebHook Resource
  • Errors
  • 100 - Does Not Exist
  • 101 - Permission Denied
  • 102 - Invalid Attribute
  • 103 - Not Logged In
  • 104 - Login Failed
  • 105 - Invalid Form Data
  • 106 - Missing Attribute
  • 107 - Enable Extension Failed
  • 108 - Disable Extension Failed
  • 109 - Extension Already Installed
  • 110 - Install Extension Failed
  • 111 - Duplicate Item
  • 112 - OAuth2 Missing Scope Error
  • 113 - OAuth2 Access Denied Error
  • 114 - Rate Limit Exceeded
  • 203 - Invalid Change Number
  • 204 - Change Number In Use
  • 205 - Missing Repository
  • 206 - Invalid Repository
  • 207 - Repository File Not Found
  • 208 - Invalid User
  • 209 - Repository Action Not Supported
  • 210 - Repository Information Error
  • 212 - Empty Changeset
  • 213 - Server Configuration Error
  • 214 - Bad Host Key
  • 215 - Unverified Host Key
  • 216 - Unverified Host Certificate
  • 217 - Missing User Key
  • 218 - Repository Authentication Error
  • 219 - Diff Empty
  • 220 - Diff Too Big
  • 221 - File Retrieval Error
  • 222 - Hosting Service Authentication Error
  • 223 - Group Already Exists
  • 224 - Diff Parse Error
  • 225 - Publish Error
  • 226 - User Query Error
  • 227 - Commit ID Already Exists
  • 228 - Token Generation Failed
  • 230 - Could not close review request
  • 231 - Could not reopen review request
  • 232 - Ship-It Revocation Error
  • REST API 2.0
  • Overview
  • Authenticating
  • API Token Policies
  • OAuth2 Authentication
  • Rich Text Fields and Types
  • Storing/Accessing Extra Data
  • Resources
  • Root List Resource
  • Default Reviewer List Resource
  • Default Reviewer Resource
  • Extension List Resource
  • Extension Resource
  • Hosting Service Account List Resource
  • Hosting Service Account Resource
  • Hosting Service List Resource
  • Hosting Service Resource
  • OAuth2 Applications List Resource
  • OAuth2 Applications Resource
  • OAuth2 Tokens List Resource
  • OAuth2 Tokens Resource
  • Repository List Resource
  • Repository Resource
  • Review Group List Resource
  • Review Group Resource
  • Review Request List Resource
  • Review Request Resource
  • Root Diff Comment List Resource
  • Root File Attachment Comment List Resource
  • Root General Comment List Resource
  • Root Review List Resource
  • Search Resource
  • Server Info Resource
  • Session Resource
  • User List Resource
  • User Resource
  • Validation List Resource
  • Validate Diff List Resource
  • Validate Diff Commit List Resource
  • WebHook List Resource
  • WebHook Resource
  • Server Info Resource
  • Default Reviewer List Resource
  • Default Reviewer Resource
  • Default Reviewer Resource
  • Diff Context Resource
  • Diff List Resource
  • Diff Resource
  • Diff Commit List Resource
  • File Diff List Resource
  • Diff Resource
  • Diff Commit List Resource
  • Diff Commit Resource
  • File Diff List Resource
  • File Diff Resource
  • Diff Commit List Resource
  • Diff Commit Resource
  • Diff Commit Resource
  • Diff File Attachment List Resource
  • Diff File Attachment Resource
  • Diff File Attachment Resource
  • Original File Resource
  • Patched File Resource
  • Extension List Resource
  • Extension Resource
  • Extension Resource
  • Hosting Service List Resource
  • Hosting Service Resource
  • Hosting Service Resource
  • Hosting Service Account List Resource
  • Hosting Service Account Resource
  • Remote Repository List Resource
  • Hosting Service Account Resource
  • Remote Repository List Resource
  • Remote Repository Resource
  • Remote Repository List Resource
  • Remote Repository Resource
  • Remote Repository Resource
  • OAuth2 Applications List Resource
  • OAuth2 Applications Resource
  • OAuth2 Applications Resource
  • OAuth2 Tokens List Resource
  • OAuth2 Tokens Resource
  • OAuth2 Tokens Resource
  • Repository List Resource
  • Repository Resource
  • Diff File Attachment List Resource
  • Repository Branches Resource
  • Repository Commits Resource
  • Repository Group List Resource
  • Repository Info Resource
  • Repository User List Resource
  • Repository Resource
  • Diff File Attachment List Resource
  • Diff File Attachment Resource
  • Repository Branches Resource
  • Repository Commits Resource
  • Repository Group List Resource
  • Repository Group Resource
  • Repository Info Resource
  • Repository User List Resource
  • Repository User Resource
  • Repository Branches Resource
  • Repository Commits Resource
  • Repository Group List Resource
  • Repository Group Resource
  • Repository Group Resource
  • Repository Info Resource
  • Repository User List Resource
  • Repository User Resource
  • Repository User Resource
  • Review Group List Resource
  • Review Group Resource
  • Review Group User List Resource
  • Review Group Resource
  • Review Group User List Resource
  • Review Group User Resource
  • Review Group User List Resource
  • Review Group User Resource
  • Review Group User Resource
  • Change List Resource
  • Change Resource
  • Change Resource
  • File Attachment List Resource
  • File Attachment Resource
  • File Attachment Comment List Resource
  • File Attachment Resource
  • File Attachment Comment List Resource
  • File Attachment Comment List Resource
  • File Diff List Resource
  • File Diff Resource
  • File Diff Comment List Resource
  • Original File Resource
  • Patched File Resource
  • File Diff Resource
  • File Diff Comment List Resource
  • Original File Resource
  • Patched File Resource
  • File Diff Comment List Resource
  • Review Request List Resource
  • Review Request Resource
  • Change List Resource
  • Diff Context Resource
  • Diff List Resource
  • File Attachment List Resource
  • Review List Resource
  • Review Request Draft Resource
  • Review Request Last Update Resource
  • Screenshot List Resource
  • Status Update List Resource
  • Review Request Resource
  • Change List Resource
  • Change Resource
  • Diff Context Resource
  • Diff List Resource
  • Diff Resource
  • File Attachment List Resource
  • File Attachment Resource
  • Review List Resource
  • Review Resource
  • Review Draft Resource
  • Review Request Draft Resource
  • Draft Diff List Resource
  • Draft File Attachment List Resource
  • Draft Screenshot List Resource
  • Review Request Last Update Resource
  • Screenshot List Resource
  • Screenshot Resource
  • Status Update List Resource
  • Status Update Resource
  • Review Request Last Update Resource
  • Screenshot List Resource
  • Screenshot Resource
  • Screenshot Comment List Resource
  • Screenshot Resource
  • Screenshot Comment List Resource
  • Screenshot Comment List Resource
  • Draft Diff List Resource
  • Draft Diff Resource
  • Draft Diff Commit List Resource
  • Draft File Diff List Resource
  • Draft Diff Resource
  • Draft Diff Commit List Resource
  • Draft Diff Commit Resource
  • Draft File Diff List Resource
  • Draft File Diff Resource
  • Draft Diff Commit List Resource
  • Draft Diff Commit Resource
  • Draft Diff Commit Resource
  • Draft File Diff List Resource
  • Draft File Diff Resource
  • Draft Original File Resource
  • Draft Patched File Resource
  • Draft File Diff Resource
  • Draft Original File Resource
  • Draft Patched File Resource
  • Draft File Attachment List Resource
  • Draft File Attachment Resource
  • Draft File Attachment Resource
  • Draft Original File Resource
  • Draft Patched File Resource
  • Draft Screenshot List Resource
  • Draft Screenshot Resource
  • Draft Screenshot Resource
  • Review Request Draft Resource
  • Draft Diff List Resource
  • Draft Diff Resource
  • Draft File Attachment List Resource
  • Draft File Attachment Resource
  • Draft Screenshot List Resource
  • Draft Screenshot Resource
  • Root Review List Resource
  • Root Diff Comment List Resource
  • Root File Attachment Comment List Resource
  • Root General Comment List Resource
  • Review List Resource
  • Review Resource
  • Review Diff Comment List Resource
  • Review File Attachment Comment List Resource
  • Review General Comment List Resource
  • Review Reply List Resource
  • Review Screenshot Comment List Resource
  • Review Draft Resource
  • Review Resource
  • Review Diff Comment List Resource
  • Review Diff Comment Resource
  • Review File Attachment Comment List Resource
  • Review File Attachment Comment Resource
  • Review General Comment List Resource
  • Review General Comment Resource
  • Review Reply List Resource
  • Review Reply Resource
  • Review Reply Draft Resource
  • Review Screenshot Comment List Resource
  • Review Screenshot Comment Resource
  • Review Draft Resource
  • Review Diff Comment List Resource
  • Review Diff Comment Resource
  • Review Diff Comment Resource
  • Review File Attachment Comment List Resource
  • Review File Attachment Comment Resource
  • Review File Attachment Comment Resource
  • Review General Comment List Resource
  • Review General Comment Resource
  • Review General Comment Resource
  • Review Screenshot Comment List Resource
  • Review Screenshot Comment Resource
  • Review Screenshot Comment Resource
  • Review Reply Draft Resource
  • Review Reply List Resource
  • Review Reply Resource
  • Review Reply Diff Comment List Resource
  • Review Reply File Attachment Comment List Resource
  • Review Reply General Comment List Resource
  • Review Reply Screenshot Comment List Resource
  • Review Reply Draft Resource
  • Review Reply Resource
  • Review Reply Diff Comment List Resource
  • Review Reply Diff Comment Resource
  • Review Reply File Attachment Comment List Resource
  • Review Reply File Attachment Comment Resource
  • Review Reply General Comment List Resource
  • Review Reply General Comment Resource
  • Review Reply Screenshot Comment List Resource
  • Review Reply Screenshot Comment Resource
  • Review Reply Diff Comment List Resource
  • Review Reply Diff Comment Resource
  • Review Reply Diff Comment Resource
  • Review Reply File Attachment Comment List Resource
  • Review Reply File Attachment Comment Resource
  • Review Reply File Attachment Comment Resource
  • Review Reply General Comment List Resource
  • Review Reply General Comment Resource
  • Review Reply General Comment Resource
  • Review Reply Screenshot Comment List Resource
  • Review Reply Screenshot Comment Resource
  • Review Reply Screenshot Comment Resource
  • Search Resource
  • Status Update List Resource
  • Status Update Resource
  • Status Update Resource
  • API Token List Resource
  • API Token Resource
  • API Token Resource
  • Archived Review Request List Resource
  • Archived Review Request Resource
  • Archived Review Request Resource
  • Muted Review Request List Resource
  • Muted Review Request Resource
  • Muted Review Request Resource
  • Session Resource
  • User List Resource
  • User Resource
  • API Token List Resource
  • Archived Review Request List Resource
  • Muted Review Request List Resource
  • User File Attachment List Resource
  • Watched List Resource
  • User Resource
  • API Token List Resource
  • API Token Resource
  • Archived Review Request List Resource
  • Archived Review Request Resource
  • Muted Review Request List Resource
  • Muted Review Request Resource
  • User File Attachment List Resource
  • User File Attachment Resource
  • Watched List Resource
  • Watched Review Group List Resource
  • Watched Review Request List Resource
  • User File Attachment List Resource
  • User File Attachment Resource
  • User File Attachment Resource
  • Watched Review Group List Resource
  • Watched Review Group Resource
  • Watched Review Group Resource
  • Watched Review Request List Resource
  • Watched Review Request Resource
  • Watched Review Request Resource
  • Watched List Resource
  • Watched Review Group List Resource
  • Watched Review Group Resource
  • Watched Review Request List Resource
  • Watched Review Request Resource
  • Validation List Resource
  • Validate Diff List Resource
  • Validate Diff Commit List Resource
  • Validate Diff List Resource
  • Validate Diff Commit List Resource
  • WebHook List Resource
  • WebHook Resource
  • WebHook Resource
  • Errors
  • 100 - Does Not Exist
  • 101 - Permission Denied
  • 102 - Invalid Attribute
  • 103 - Not Logged In
  • 104 - Login Failed
  • 105 - Invalid Form Data
  • 106 - Missing Attribute
  • 107 - Enable Extension Failed
  • 108 - Disable Extension Failed
  • 109 - Extension Already Installed
  • 110 - Install Extension Failed
  • 111 - Duplicate Item
  • 112 - OAuth2 Missing Scope Error
  • 113 - OAuth2 Access Denied Error
  • 114 - Rate Limit Exceeded
  • 203 - Invalid Change Number
  • 204 - Change Number In Use
  • 205 - Missing Repository
  • 206 - Invalid Repository
  • 207 - Repository File Not Found
  • 208 - Invalid User
  • 209 - Repository Action Not Supported
  • 210 - Repository Information Error
  • 212 - Empty Changeset
  • 213 - Server Configuration Error
  • 214 - Bad Host Key
  • 215 - Unverified Host Key
  • 216 - Unverified Host Certificate
  • 217 - Missing User Key
  • 218 - Repository Authentication Error
  • 219 - Diff Empty
  • 220 - Diff Too Big
  • 221 - File Retrieval Error
  • 222 - Hosting Service Authentication Error
  • 223 - Group Already Exists
  • 224 - Diff Parse Error
  • 225 - Publish Error
  • 226 - User Query Error
  • 227 - Commit ID Already Exists
  • 228 - Token Generation Failed
  • 230 - Could not close review request
  • 231 - Could not reopen review request
  • 232 - Ship-It Revocation Error
  • Glossary
  • Extending Review Board
  • Extension Files/Package Layout
  • Creating an Extension Class
  • Extension Configuration
  • Database Models
  • Extension Static Media Files
  • JavaScript Extensions
  • Testing Extensions
  • Extension Distribution
  • Writing Review Board Extensions
  • The rbext Tool
  • Extension Hooks
  • AccountPageFormsHook
  • AccountPagesHook
  • Action Hooks
  • AdminWidgetHook
  • APIExtraDataAccessHook
  • AuthBackendHook
  • AvatarServiceHook
  • CommentDetailDisplayHook
  • DashboardColumnsHook
  • DashboardSidebarItemsHook
  • DataGridColumnsHook
  • EmailHook
  • ReviewRequestPublishedEmailHook
  • ReviewRequestClosedEmailHook
  • ReviewPublishedEmailHook
  • ReviewReplyPublishedEmailHook
  • FileAttachmentThumbnailHook
  • FileDiffACLHook
  • HostingServiceHook
  • IntegrationHook
  • NavigationBarHook
  • ReviewRequestApprovalHook
  • ReviewRequestFieldsHook
  • ReviewRequestFieldSetsHook
  • ReviewUIHook
  • SCMToolHook
  • SignalHook
  • TemplateHook
  • URLHook
  • UserInfoboxHook
  • UserPageSidebarItemsHook
  • WebAPICapabilitiesHook
  • JavaScript Extension Hooks
  • CommentDialogHook
  • ReviewDialogCommentHook
  • ReviewDialogHook
  • Adding Review Request Fields
  • Review UI Integration
  • Writing Authentication Backends
  • Writing Legacy Authentication Backends
  • Extending the Web API
  • Module and Class References
  • reviewboard
  • reviewboard.deprecation
  • reviewboard.rb_platform
  • reviewboard.signals
  • reviewboard.accounts.backends
  • reviewboard.accounts.backends.ad
  • reviewboard.accounts.backends.base
  • reviewboard.accounts.backends.http_digest
  • reviewboard.accounts.backends.ldap
  • reviewboard.accounts.backends.nis
  • reviewboard.accounts.backends.registry
  • reviewboard.accounts.backends.standard
  • reviewboard.accounts.backends.x509
  • reviewboard.accounts.decorators
  • reviewboard.accounts.errors
  • reviewboard.accounts.managers
  • reviewboard.accounts.middleware
  • reviewboard.accounts.mixins
  • reviewboard.accounts.models
  • reviewboard.accounts.pages
  • reviewboard.accounts.privacy
  • reviewboard.accounts.templatetags.accounts
  • reviewboard.accounts.trophies
  • reviewboard.accounts.forms.auth
  • reviewboard.accounts.forms.pages
  • reviewboard.accounts.forms.registration
  • reviewboard.admin
  • reviewboard.admin.admin_sites
  • reviewboard.admin.cache_stats
  • reviewboard.admin.checks
  • reviewboard.admin.decorators
  • reviewboard.admin.form_widgets
  • reviewboard.admin.middleware
  • reviewboard.admin.model_admin
  • reviewboard.admin.security_checks
  • reviewboard.admin.server
  • reviewboard.admin.siteconfig
  • reviewboard.admin.support
  • reviewboard.admin.validation
  • reviewboard.admin.widgets
  • reviewboard.attachments.forms
  • reviewboard.attachments.managers
  • reviewboard.attachments.mimetypes
  • reviewboard.attachments.models
  • reviewboard.avatars.registry
  • reviewboard.avatars.services
  • reviewboard.avatars.settings
  • reviewboard.avatars.templatetags.avatars
  • reviewboard.avatars.testcase
  • reviewboard.changedescs.models
  • reviewboard.datagrids.columns
  • reviewboard.datagrids.grids
  • reviewboard.datagrids.sidebar
  • reviewboard.diffviewer.chunk_generator
  • reviewboard.diffviewer.differ
  • reviewboard.diffviewer.diffutils
  • reviewboard.diffviewer.errors
  • reviewboard.diffviewer.forms
  • reviewboard.diffviewer.managers
  • reviewboard.diffviewer.models
  • reviewboard.diffviewer.models.diffcommit
  • reviewboard.diffviewer.models.diffset
  • reviewboard.diffviewer.models.diffset_history
  • reviewboard.diffviewer.models.filediff
  • reviewboard.diffviewer.models.legacy_file_diff_data
  • reviewboard.diffviewer.models.raw_file_diff_data
  • reviewboard.diffviewer.myersdiff
  • reviewboard.diffviewer.opcode_generator
  • reviewboard.diffviewer.parser
  • reviewboard.diffviewer.processors
  • reviewboard.diffviewer.renderers
  • reviewboard.diffviewer.smdiff
  • reviewboard.extensions.base
  • reviewboard.extensions.hooks
  • reviewboard.extensions.packaging
  • reviewboard.extensions.testing
  • reviewboard.extensions.testing.testcases
  • reviewboard.hostingsvcs.errors
  • reviewboard.hostingsvcs.forms
  • reviewboard.hostingsvcs.hook_utils
  • reviewboard.hostingsvcs.models
  • reviewboard.hostingsvcs.repository
  • reviewboard.hostingsvcs.service
  • reviewboard.hostingsvcs.testing
  • reviewboard.hostingsvcs.testing.testcases
  • reviewboard.hostingsvcs.utils.paginator
  • reviewboard.integrations
  • reviewboard.integrations.base
  • reviewboard.integrations.forms
  • reviewboard.integrations.models
  • reviewboard.integrations.urls
  • reviewboard.integrations.views
  • reviewboard.notifications
  • reviewboard.notifications.email
  • reviewboard.notifications.email.backend
  • reviewboard.notifications.email.decorators
  • reviewboard.notifications.email.hooks
  • reviewboard.notifications.email.message
  • reviewboard.notifications.email.utils
  • reviewboard.notifications.email.views
  • reviewboard.notifications.forms
  • reviewboard.notifications.managers
  • reviewboard.notifications.models
  • reviewboard.notifications.webhooks
  • reviewboard.reviews.actions
  • reviewboard.reviews.builtin_fields
  • reviewboard.reviews.chunk_generators
  • reviewboard.reviews.conditions
  • reviewboard.reviews.context
  • reviewboard.reviews.default_actions
  • reviewboard.reviews.detail
  • reviewboard.reviews.errors
  • reviewboard.reviews.features
  • reviewboard.reviews.fields
  • reviewboard.reviews.forms
  • reviewboard.reviews.managers
  • reviewboard.reviews.markdown_utils
  • reviewboard.reviews.models
  • reviewboard.reviews.signals
  • reviewboard.reviews.templatetags.reviewtags
  • reviewboard.reviews.ui.base
  • reviewboard.reviews.ui.image
  • reviewboard.reviews.ui.markdownui
  • reviewboard.reviews.ui.text
  • reviewboard.scmtools.certs
  • reviewboard.scmtools.conditions
  • reviewboard.scmtools.core
  • reviewboard.scmtools.crypto_utils
  • reviewboard.scmtools.errors
  • reviewboard.scmtools.forms
  • reviewboard.scmtools.managers
  • reviewboard.scmtools.models
  • reviewboard.scmtools.signals
  • reviewboard.scmtools.tests.testcases
  • reviewboard.search.fields
  • reviewboard.search.forms
  • reviewboard.search.indexes
  • reviewboard.search.search_backends.base
  • reviewboard.search.search_backends.elasticsearch
  • reviewboard.search.search_backends.registry
  • reviewboard.search.search_backends.whoosh
  • reviewboard.search.signal_processor
  • reviewboard.search.testing
  • reviewboard.site.conditions
  • reviewboard.site.context_processors
  • reviewboard.site.decorators
  • reviewboard.site.middleware
  • reviewboard.site.mixins
  • reviewboard.site.models
  • reviewboard.site.signals
  • reviewboard.site.templatetags.localsite
  • reviewboard.site.urlresolvers
  • reviewboard.site.validation
  • reviewboard.ssh.client
  • reviewboard.ssh.errors
  • reviewboard.ssh.policy
  • reviewboard.ssh.storage
  • reviewboard.ssh.utils
  • reviewboard.testing.hosting_services
  • reviewboard.testing.scmtool
  • reviewboard.testing.testcase
  • reviewboard.webapi.auth_backends
  • reviewboard.webapi.base
  • reviewboard.webapi.decorators
  • reviewboard.webapi.errors
  • reviewboard.webapi.mixins
  • reviewboard.webapi.models
  • reviewboard.webapi.server_info
  • reviewboard.webapi.tests.base
  • Frequently Asked Questions
  • General Index
  • Python Module Index
  • Release Notes
  • This documentation covers Review Board 5.0. You can select a version above or view the latest documentation.

    Creating a Review Board Site¶

    Once Review Board is installed, a site must be created. Each site maps to a domain, subdomain, or directory installation.

    To create a site, you will use the rb-site install command.

    You will need to decide on a place to install the site. In the examples here, we will use /var/www/reviews.example.com. The directory should not exist yet. rb-site will create it.

    1. Create the Database¶

    Before you create the Review Board site, you’ll need to create a database. The particular steps for this depend on the database server software that you intend to use.

    MySQL / MariaDB¶

    We recommend using MySQL 8 or higher, or MariaDB. If you’re using an older version of MySQL, start by choosing the right encoding.

    Choose the Encoding¶

    If you are running a version of MySQL prior to 8.x, you will want to use the utf8mb4 encoding. Version 8.x and higher use this by default. To set this

    Before creating your database, make sure that your server is configured to use the utf8mb4 encoding for text. In the file my.cnf, add the following settings:

    [client]
    default-character-set=utf8mb4
    
    [mysqld]
    character-set-server=utf8mb4
    

    After making these changes, restart your MySQL server.

    Create the MySQL Database¶

    You’ll need to create the Review Board user and database through the mysql command prompt, as follows:

    $ mysql -u <username> -p -h <hostname>
    mysql> CREATE DATABASE <database_name>;
    mysql> CREATE USER '<rb_user>' IDENTIFIED BY '<rb_password>';
    mysql> GRANT ALL PRIVILEGES ON <database_name>.* to '<rb_user>';
    

    For example:

    $ mysql -u root -p -h db.example.com
    mysql> CREATE DATABASE reviewboard;
    mysql> CREATE USER 'rbuser'@'%' IDENTIFIED BY 's3cr3t';
    mysql> GRANT ALL PRIVILEGES ON reviewboard.* to 'rbuser'@'%';
    

    PostgreSQL¶

    Create the PostgreSQL Database¶

    You’ll need to create the Review Board user and database through the psql command prompt, as follows:

    $ psql -U <username> -h <hostname>
    postgres=# CREATE USER <rb_user> WITH PASSWORD '<rb_password>';
    postgres=# CREATE DATABASE <database_name> WITH OWNER <rb_user>;
    

    For example:

    $ psql -U postgres -h db.example.com
    postgres=# CREATE USER rbuser WITH PASSWORD 's3cr3t';
    postgres=# CREATE DATABASE reviewboard WITH OWNER rbuser;
    

    2. Create the Site Directory¶

    1. Begin installation by running the following command:

      $ /opt/reviewboard/bin/rb-site install <path>
      

      For example:

      $ /opt/reviewboard/bin/rb-site install /var/www/reviews.example.com
      
      $ rb-site install <path>
      

      For example:

      $ rb-site install /var/www/reviews.example.com
      
    2. Answer the questions about your install. These will include: including:

      • The domain name for the server

      • The path for the server, relative to the domain

      • The database information (as configured above)

      • The memcached server address

      • The username and password to use for the Review Board administrator account

    3. Once finished, follow rb-site’s instructions to complete your installation.

      We’ll go over those next.

    3. Configure Permissions¶

    Review Board must have write access to the following directories and their subdirectories:

    • sitedir/data

    • sitedir/htdocs/media/uploaded

    • sitedir/htdocs/media/ext

    • sitedir/htdocs/static/ext

    Since Review Board is run by your web server, these must be writable by the web server’s user. If using Apache, this will likely be www-data or apache2. Please check the user your web server is running as for details.

    For example:

    $ cd /var/www/reviews.example.com
    $ chown -R www-data data
    $ chown -R www-data htdocs/media/uploaded
    $ chown -R www-data htdocs/media/ext
    $ chown -R www-data htdocs/static/ext
    

    4. Configuring SELinux (optional)¶

    Your system may be configured for SELinux, which is designed to keep your Linux distribution secure. This is usually enabled by default on Red Hat Enterprise, Fedora, and CentOS Stream.

    If enabled, you will need to configure additional permissions:

    1. Check if SELinux is enabled:

      $ getenforce
      Enforcing
      

      If this says “Enforcing”, SELinux is currently enabled, and you’ll need to continue on with the next step.

      If this says “Permissive” or “Disabled”, then SELinux is not enabled. If you don’t plan to enable SELinux, you can skip this section.

    2. Grant your web server access to the necessary services:

      $ setsebool -P httpd_can_connect_ldap 1
      $ setsebool -P httpd_can_network_connect 1
      $ setsebool -P httpd_can_network_connect_db 1
      $ setsebool -P httpd_can_network_memcache 1
      $ setsebool -P httpd_can_sendmail 1
      $ setsebool -P httpd_unified 1
      
    3. Register permissions on your Review Board site directory.

      This tells SELinux what policies to set when applying permissions. They’ll be applied in the next step.

      We’ll use /var/www/reviews.example.com for this example:

      $ semanage fcontext -a -t httpd_sys_content_t \
            "/var/www/reviews.example.com/(conf|htdocs)(/.*)?"
      $ semanage fcontext -a -t httpd_sys_rw_content_t \
            "/var/www/reviews.example.com/(data|tmp|htdocs/static/ext)(/.*)?"
      $ semanage fcontext -a -t httpd_sys_rw_content_t \
            "/var/www/reviews.example.com/htdocs/media/(ext|uploaded)(/.*)?"
      $ semanage fcontext -a -t httpd_log_t \
            "/var/www/reviews.example.com/logs(/.*)?"
      
    4. Apply the new policies to your site directory.

      $ restorecon -Rv /var/www/reviews.example.com
      

      Important

      You may need to re-run this when upgrading your site directory.

    If you need any help with SELinux, reach out to us for support.

    5. Configure the Web Server¶

    Your web server must be configured to serve Review Board. This section will go over different configurations that are available.

    Review Board is known to work well with the following configurations:

    • Apache + mod_wsgi (the most common configuration)

    • Nginx + Gunicorn

    • Nginx + uWSGI

    Apache¶

    Apache is commonly used along with mod_wsgi to serve Python applications.

    Review Board ships a sample sitedir/conf/webconfs/apache-wsgi.conf file built for your site. You can use this as-is or customize it. A sample configuration is also provided below.

    How you enable your Apache configuration depends on the Linux distribution. We’ll provide examples, using reviews.example.com.

    $ cd /etc/apache2
    $ cp /var/www/reviews.example.com/conf/webconfs/apache-wsgi.conf \
         sites-available/reviews.example.com.conf
    $ ln -s sites-available/reviews.example.com.conf \
            sites-enabled/
    
    $ cd /etc/httpd/conf.d
    $ cp /var/www/reviews.example.com/conf/webconfs/apache-wsgi.conf \
         reviews.example.com.conf
    

    Once set up, you’ll need to restart Apache.

    Note

    Some Apache installations ship with a default Virtual Host configuration that you may want to disable.

    If you visit your Review Board site and see a default Apache page or a directory listing, look for a file named default, 000-default, or similar, and disable it.

    Embedded Mode vs. Daemon Mode¶

    mod_wsgi can be run in one of two modes: Embedded mode, or daemon mode.

    Embedded mode is simpler to set up, but less flexible. You may want to start with embedded mode, and switch to daemon mode once you’re ready for production use.

    In embedded mode, Review Board is run directly within the Apache process. This has a couple of important restrictions:

    1. After upgrading Review Board, Apache will need to be restarted.

      This may be important to note if your Apache server is also serving other high-traffic sites.

    2. Apache can only serve one Review Board instance.

      If you need to host multiple instances, you may want to consider daemon mode.

    In daemon mode, Review Board is run as separate processes, all managed by Apache. This requires some decisions on the number of processes and threads needed, which will be based on your system settings, traffic, and other sites served by Apache.

    See the mod_wsgi configuration guide for additional details.

    Sample Apache Configuration¶

    <VirtualHost *:80>
      # NOTE: If you change the ServerName or add ServerAlias, you must change
      #       ALLOWED_HOSTS to match. This can be found in:
      #
      #       /var/www/reviews.example.com/conf/settings_local.py
      ServerName reviews.example.com
    
    
      # If enabling SSL on Apache, uncomment these lines and specify the
      # SSL paths.
      #
      # You may also need to add additional options, depending on your setup.
      # Please refer to the Apache documentation.
      #
      # SSLEngine On
      # SSLCertificateFile /var/www/reviews.example.com/conf/ssl/fullchain.pem
      # SSLCertificateKeyFile /var/www/reviews.example.com/conf/ssl/privkey.pem
    
    
      # mod_wsgi Embedded Mode configuration
      #
      # This default configuration enables Embedded Mode, but you can remove
      # this and uncomment Daemon Mode below.
      #
      # Embedded mode is simpler to configure, but daemon mode is recommended
      # in production environments.
      WSGIPassAuthorization On
      WSGIScriptAlias "/" "/var/www/reviews.example.com/htdocs/reviewboard.wsgi/"
    
    
      # mod_wsgi Daemon Mode configuration
      #
      # Uncomment this to use daemon mode.
      #
      # Make sure to choose a suitable number of processes and threads for your
      # server.
      #
      # WSGIPassAuthorization On
      # WSGIProcessGroup reviews_example_com
      # WSGIDaemonProcess \
      #     reviews_example_com \
      #     display-name=%{GROUP} \
      #     processes=6 threads=30
      # WSGIScriptAlias \
      #     "/" \
      #     "/var/www/reviews.example.com/htdocs/reviewboard.wsgi" \
      #     process-group=reviews_example_com application-group=%{GROUP}
      # WSGIImportScript \
      #     /var/www/reviews.example.com/htdocs/reviewboard.wsgi \
      #     process-group=reviews_example_com application-group=%{GROUP}
    
    
      # Log configuration
      #
      # NOTE: We recommend adding these to your logrotate configuration.
      ErrorLog /var/www/reviews.example.com/logs/error_log
      CustomLog /var/www/reviews.example.com/logs/access_log combined
    
    
      # Aliases for serving static files.
      DocumentRoot "/var/www/reviews.example.com/htdocs"
      ErrorDocument 500 /errordocs/500.html
      Alias /media "/var/www/reviews.example.com/htdocs/media"
      Alias /static "/var/www/reviews.example.com/htdocs/static"
      Alias /errordocs "/var/www/reviews.example.com/htdocs/errordocs"
      Alias /robots.txt "/var/www/reviews.example.com/htdocs/robots.txt"
    
      <Directory "/var/www/reviews.example.com/htdocs">
        AllowOverride All
        Options -Indexes +FollowSymLinks
    
        <IfVersion < 2.4>
          Allow from all
        </IfVersion>
    
        <IfVersion >= 2.4>
          Require all granted
        </IfVersion>
      </Directory>
    
      # Prevent the server from processing or allowing the rendering of
      # certain file types.
      <LocationMatch ^(/(static|media|errordocs))>
        SetHandler None
        Options None
    
        AddType text/plain .html .htm .shtml .php .php3 .php4 .php5 .phps .asp
        AddType text/plain .pl .py .fcgi .cgi .phtml .phtm .pht .jsp .sh .rb
    
        <IfModule mod_php5.c>
          php_flag engine off
        </IfModule>
      </LocationMatch>
    
      <Location "/media/uploaded">
        # Force all uploaded media files to download.
        <IfModule mod_headers.c>
          Header set Content-Disposition "attachment"
        </IfModule>
      </Location>
    </VirtualHost>
    

    Nginx + Gunicorn¶

    Gunicorn is a web server built for efficiently running Python-based web applications, such as Review Board. It’s often paired with another web server, like Nginx, in the following setup:

    1. Nginx listens to ports 80/443, handling all HTTP(S) requests.

      This will serve up static media files and forward anything else to Gunicorn over port 8000.

    2. Gunicorn listens to port 8000, handling all Review Board requests.

    Review Board ships two sample files:

    1. sitedir/conf/webconfs/nginx-to-gunicorn.conf: A configuration file for Nginx.

    2. sitedir/conf/webconfs/run-gunicorn.sh: A sample script for running Gunicorn.

    You can use these as-is for testing or customize them for production. They are also listed below for reference.

    See the official Gunicorn documentation for installation and deployment instructions.

    Running Gunicorn¶

    To manually run Gunicorn for an example /var/www/reviews.example.com:

    $ gunicorn \
          --bind=0.0.0.0:8000 \
          --log-level=info \
          --timeout=120 \
          --workers=6 \
          --threads=30 \
          --log-file=/var/www/reviews.example.com/logs/gunicorn.log \
          --env REVIEWBOARD_SITEDIR=/var/www/reviews.example.com \
          reviewboard.wsgi
    

    This is also available as sitedir/conf/webconfs/run-gunicorn.sh.

    You will want to change the workers and threads above. This will be based on on your system settings and server load.

    Gunicorn does not ship as a service. You will likely want to set it up to run automatically through systemd, supervisord, runit, or another service monitoring method. See Gunicorn’s Monitoring documentation for examples.

    Sample Nginx Configuration¶

    # This is a sample configuration file for a Nginx -> Gunicorn deployment for
    # Review Board.
    #
    # Please go through this file and make sure it's suitable for your setup
    # before using it.
    
    server {
      # NOTE: If you change the server_name, you must change ALLOWED_HOSTS to
      #     match. This can be found in:
      #
      #     /var/www/reviews.example.com/conf/settings_local.py
      server_name reviews.example.com;
    
      # If enabling SSL on Nginx, remove the "listen 80" lines below and use
      # configure these settings instead. You will also need to change
      # X-Forwarded-Ssl below.
      #
      # listen [::]:443 ssl http2;
      # listen 443 ssl http2;
      # ssl_certificate /var/www/reviews.example.com/conf/ssl/fullchain.pem;
      # ssl_certificate_key /var/www/reviews.example.com/conf/ssl/privkey.pem;
      listen [::]:80;
      listen 80;
    
      # Log configuration
      #
      # NOTE: We recommend adding these to your logrotate configuration.
      access_log /var/www/reviews.example.com/logs/nginx_access_log;
      error_log /var/www/reviews.example.com/logs/nginx_error_log;
    
      location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_redirect        off;
    
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_set_header X-Forwarded-Proto $scheme;
    
        # NOTE: Set this to "on" if using SSL.
        proxy_set_header X-Forwarded-Ssl off;
    
        client_max_body_size        10m;
        client_body_buffer_size     128k;
        proxy_connect_timeout       90;
        proxy_send_timeout          90;
        proxy_read_timeout          90;
        proxy_headers_hash_max_size 512;
        proxy_buffer_size           4k;
        proxy_buffers               4 32k;
        proxy_busy_buffers_size     64k;
        proxy_temp_file_write_size  64k;
      }
    
      location /media/ {
        alias /var/www/reviews.example.com/htdocs/media/;
        expires max;
        add_header Cache-Control public;
      }
    
      location /static/ {
        alias /var/www/reviews.example.com/htdocs/static/;
        expires max;
        add_header Cache-Control public;
      }
    
      location /errordocs/ {
        alias /var/www/reviews.example.com/htdocs/errordocs/;
        expires 5d;
      }
    
      location /robots.txt {
        alias /var/www/reviews.example.com/htdocs/robots.txt;
        expires 5d;
      }
    }
    

    Nginx + uWSGI¶

    uWSGI is another web server built for efficiently running Python-based web applications, such as Review Board. It’s often paired with another web server, like Nginx, in the following setup:

    1. Nginx listens to ports 80/443, handling all HTTP(S) requests.

      This will serve up static media files and forward anything else to uWSGI over a local UNIX socket.

    2. uWSGI listens on the socket, handling all Review Board requests.

    Review Board ships two sample files:

    1. sitedir/conf/webconfs/nginx-to-uwsgi.conf: A configuration file for Nginx.

    2. sitedir/conf/webconfs/uwsgi.ini: A configuration file for uWSGI.

    You can use these as-is for testing or customize them for production. They are also listed below for reference.

    See the official uWSGI documentation for installation and deployment instructions.

    Running uWSGI¶

    To manually run uWSGI for an example /var/www/reviews.example.com/conf/webconfs/uwsgi.ini:

    $ uwsgi /var/www/reviews.example.com/conf/webconfs/uwsgi.ini
    

    You will want to change the workers and threads in that file. This will be based on on your system settings and server load.

    uWSGI does not ship as a service. You will likely want to set it up to run automatically through a service monitoring method. See the uWSGI systemd documentation for examples.

    Sample uWSGI Configuration¶

    [uwsgi]
    module = reviewboard.wsgi:application
    env=REVIEWBOARD_SITEDIR=/var/www/reviews.example.com
    
    master = true
    processes = 6
    threads = 30
    
    socket = /var/www/reviews.example.com/data/uwsgi.sock
    cmod-socket = 664
    vacuum = true
    
    die-on-term = true
    

    Sample Nginx Configuration¶

    # This is a sample configuration file for a Nginx -> uWSGI deployment for
    # Review Board.
    #
    # Please go through this file and make sure it's suitable for your setup
    # before using it.
    
    server {
      # NOTE: If you change the server_name, you must change ALLOWED_HOSTS to
      #     match. This can be found in:
      #
      #     /var/www/reviews.example.com/conf/settings_local.py
      server_name reviews.example.com;
    
      # If enabling SSL on Nginx, remove the "listen 80" lines below and use
      # configure these settings instead:
      #
      # listen [::]:443 ssl http2;
      # listen 443 ssl http2;
      # ssl_certificate /var/www/reviews.example.com/conf/ssl/fullchain.pem;
      # ssl_certificate_key /var/www/reviews.example.com/conf/ssl/privkey.pem;
      listen [::]:80;
      listen 80;
    
      # Log configuration
      #
      # NOTE: We recommend adding these to your logrotate configuration.
      access_log /var/www/reviews.example.com/logs/nginx_access_log;
      error_log /var/www/reviews.example.com/logs/nginx_error_log;
    
      location / {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/reviews.example.com/data/uwsgi.sock;
      }
    
      location /media/ {
        alias /var/www/reviews.example.com/htdocs/media/;
        expires max;
        add_header Cache-Control public;
      }
    
      location /static/ {
        alias /var/www/reviews.example.com/htdocs/static/;
        expires max;
        add_header Cache-Control public;
      }
    
      location /errordocs/ {
        alias /var/www/reviews.example.com/htdocs/errordocs/;
        expires 5d;
      }
    
      location /robots.txt {
        alias /var/www/reviews.example.com/htdocs/robots.txt;
        expires 5d;
      }
    }
    

    6. Configure Task Scheduling¶

    Cron is used for automatically running periodic maintenance tasks, including:

    • Updating the search index

    • Clearing expired login sessions

    Your site directory contains a sample Crontab file at sitedir/conf/cron.conf. You can customize this and then register it with Cron as the web server:

    $ sudo -u <web_server_user> crontab /path/to/sitedir/conf/cron.conf
    

    For example:

    $ sudo -u apache2 crontab /var/www/reviews.example.com/conf/cron.conf
    

    A sample Crontab configuration looks like:

    # Update search index every 10 minutes
    0,10,20,30,40,50 * * * * "/opt/reviewboard/bin/rb-site" \
        manage "/var/www/reviews.example.com" update_index -- -a 1
    
    # Clear expired sessions once a day at 2am
    0 2 * * * "/opt/reviewboard/bin/rb-site" \
        manage "/var/www/reviews.example.com" clearsessions
    
    # Update search index every 10 minutes
    0,10,20,30,40,50 * * * * "/usr/bin/python3.11" "/usr/bin/rb-site" \
        manage "/var/www/reviews.example.com" update_index -- -a 1
    
    # Clear expired sessions once a day at 2am
    0 2 * * * "/usr/bin/python3.11" "/usr/bin/rb-site" \
        manage "/var/www/reviews.example.com" clearsessions
    

    You’re Done!¶

    Now that Review Board is installed and your site directory is created, you can start your web server and navigate to Review Board.

    You’ll want to configure Review Board and connect it to any source code management systems you’re using.

    To learn more:

    • Configuring Review Board

    • Managing Repositories

    • Administration Guide

    Keep up with the latest Review Board releases, security updates, and helpful information.

    About
    News
    Demo
    RBCommons Hosting
    Integrations
    Happy Users
    Support Options
    Documentation
    FAQ
    User Manual
    RBTools
    Administration Guide
    Power Pack
    Release Notes
    Downloads
    Review Board
    RBTools
    Djblets
    Power Pack
    Package Store
    PGP Signatures
    Contributing
    Bug Tracker
    Submit Patches
    Development Setup
    Wiki
    Follow Us
    Mailing Lists
    Reddit
    Twitter
    Mastodon
    Facebook
    YouTube

    Copyright © 2006-2025 Beanbag, Inc. All rights reserved.

    Terms of Service — Privacy Policy — AI Ethics Policy — Branding

    On this page

    • [Top]
    • 1. Create the Database
      • MySQL / MariaDB
        • Choose the Encoding
        • Create the MySQL Database
      • PostgreSQL
        • Create the PostgreSQL Database
    • 2. Create the Site Directory
    • 3. Configure Permissions
    • 4. Configuring SELinux (optional)
    • 5. Configure the Web Server
      • Apache
        • Embedded Mode vs. Daemon Mode
        • Sample Apache Configuration
      • Nginx + Gunicorn
        • Running Gunicorn
        • Sample Nginx Configuration
      • Nginx + uWSGI
        • Running uWSGI
        • Sample uWSGI Configuration
        • Sample Nginx Configuration
    • 6. Configure Task Scheduling
    • You’re Done!