Administering Collaborative Editing
Collaborative editing takes teamwork to the next level. This page covers everything you need to know about administering collaborative editing.
Head to Collaborative editing to find out how your team can work together in real time on software requirements, meeting notes, retros, and any other Confluence page you can think of.
About Synchrony
Collaborative editing is powered by Synchrony which synchronises data in real time. Synchrony is executed as a separate process by Confluence and managed by Confluence automatically. Under normal circumstances it should not need to be managed manually by an administrator.
To check if Synchrony is running, go to > General Configuration > Collaborative editing.
Here you can check your Synchrony status and current configuration, including current port, database driver and maximum heap size allocated to Synchrony. This information can be useful if you need to troubleshoot Synchrony problems.
Synchrony runs on port 8091 by default, and an internal Synchrony proxy means that you shouldn't need to open this additional port.
Change the editing mode
The editing mode determines the editing experience for all users in your site. This is how you turn collaborative editing on or off.
To change the editing mode:
- Go to > General Configuration > Collaborative editing.
- Choose Change mode.
- Select a mode and choose Change.
Changing the editing mode is not trivial, and some changes can result in the loss of your users' drafts, so it is good to understand the implications of each mode.
The following modes are available:
Mode | Implications |
---|---|
On | This mode allows your team to edit a shared draft of a page at the same time, and see each others' changes in real time. This the recommended editing mode. |
Limited | This mode protects your users' shared drafts if you need to troubleshoot Synchrony. You would only switch to this mode if your users are experiencing problems editing and publishing. The editing experience will be very limited for your users:
As soon as Synchrony is running again, we recommend turning collaborative editing back on. |
Off | This mode means that your team can only edit their own personal draft of a page. Confluence will attempt to merge any conflicts on save. This mode replicates the Confluence 5 editing experience. This mode is useful if you are unable to run Synchrony successfully in your environment, or if you have decided that collaborative editing is not for you (for example if you have auditing requirements that would prohibit using collaborative editing just yet). All existing shared drafts are lost when you switch to this mode, so make sure your users have published any work they want to keep before you make the change. |
Auditing considerations
We know that auditing is a major consideration for some customers. We don't yet have very granular auditing capabilities with collaborative editing. All page changes are currently attributed to the person that publishes the page, rather than the people who made each specific change.
If this is going to be a problem in your site, we recommend turning collaborative editing off in your site for now.
No version history in unpublished drafts
We're saving all the time in collaborative editing, but we don't save versions of unpublished changes. When restoring an earlier page version, you can only roll back to an existing published version. Any unpublished changes will be lost when you restore a previous version.
Visibility of edits made by anonymous users
There are some additional things to be aware of if you have granted the Add page permission (and Can use global permission) to anonymous users.
You won't be alerted, when closing the editor or publishing a page, if the only unpublished changes on the page were made by anonymous users. This means a logged in user may inadvertently publish changes they were not aware had been made to the page.
The changes themselves are visible in the page, but the usual warning dialog will not appear if the only people to have made changes were not logged in.
If there are unpublished changes from both logged in users and anonymous users, the warning dialog will appear, but only the logged in users will be listed in the dialog. Changes made by all users (including anonymous) will be included if you view the changes from that dialog.
Change your Synchrony configuration
You can't change your Synchrony configuration through the Confluence UI. Configuration changes are made via system properties. In most cases you will not need to make changes to the default configuration.
See Recognized System Properties for the full list of Synchrony system properties.
If you need to pass additional arguments to Synchrony's JVM directly, create a file called synchrony-args.properties
in the Confluence home directory and include the arguments you want to pass to Synchrony, one per line, as follows.
property1=value1
property2=value2
This will add -Dproperty1=value1 -Dproperty2=value2
to the Synchrony command. This is only available in Confluence 6.0.2 and later.
You can't use this method for passing any value that is already handled by a system property, such port, Xmx or Xss etc. See Configuring System Properties for a full list of system properties.
Proxy and SSL considerations
You may need to make some changes to your environment in order to use collaborative editing in your site. This is because Synchrony runs in a seperate JVM and does not support direct HTTPS connections.
The following info is specific to Confluence Server. If you're using Data Center, see Configuring Synchrony for Data Center.
Confluence's internal Synchrony proxy
Synchrony runs in a seperate JVM on port 8091 by default. To simplify your Confluence set up, a built-in, internal proxy can handle requests to Synchrony so you do not need to open port 8091.
The internal proxy is enabled by default, but is automatically bypassed if Confluence detects you have configured a reverse proxy.
There are situations when you may want to manually enable or disable the internal Synchrony proxy, so it's useful to understand how Confluence determines whether to use the internal proxy:
- If the
synchrony.proxy.enabled
system property is set, the value will determine if the internal proxy is enabled or disabled (true
it is enabled,false
it is disabled). - If the system property is not set and Confluence detects a
proxyPort
has been configured in yourserver.xml
file, the proxy is disabled. - If the system property is not set and there is no
proxyPort
configured in yourserver.xml
file, the property in theconfluence.cfg.xml
file will determine if the proxy is enabled or disabled.
Possible proxy configurations
No reverse proxy (default)
The default configuration is to use Confluence's internal Synchrony proxy, as shown in the diagram below. Note that SSL is terminated at Tomcat. This is ideal if you do not plan to use a reverse proxy. The Synchrony proxy is enabled by default when you install Confluence.
Reverse proxy without internal Synchrony proxy
If you use a reverse proxy, we recommend terminating SSL at your reverse proxy, as shown below. When you configure Confluence to use a reverse proxy the internal Synchrony proxy will be bypassed by default.
Check out the following guides for example reverse proxy configurations:
- Using Apache with mod_proxy
- Running Confluence behind NGINX with SSL
- Proxying Atlassian server applications with Apache HTTP Server (mod_proxy_http)
- Proxying Atlassian server applications with Microsoft Internet Information Services (IIS)
- How to configure Amazon Web Service Application Load Balancer with Confluence
Reverse proxy with internal Synchrony proxy
It is also possible to use a reverse proxy and Confluence's internal Synchrony proxy together, as shown below. You would use this method when you want to use a reverse proxy, but do not want to open port 8091. SSL should still be terminated at your reverse proxy.
Check out the following guides for example reverse proxy configurations:
After pointing your reverse proxy at /synchrony-proxy
you will also need to manually enable Confluence's internal Synchrony proxy by setting the synchrony.proxy.enabled
system property to true
.