Zotero on a Windows Terminal Server

Hello all,

I'm new on Zotero, we are trying to make it work on our Terminal Server.

It seems that whenever we have more than 1 user connected on the server, all the pages saved by all users go to the Zotero DB of the first user.

They all have separate Windows account and Zotero accounts, however it seems that whenever we save a page from Firefox to Zotero, it doesn't go the the correct user.

Do you have any information about this scenario ?

Is it possible to fix this behaviour ??

Thank you
  • Zotero listens to requests from the connector via a local port, so the first instance open will be listening on that port. You can configure this with the httpServer.port hidden pref in Zotero and the connector.url hidden pref in the connector, so you'd probably need to automate that to choose a random port at login for each user (or a permanent fixed port for each user, depending on how many users you're supporting).

    In Zotero that pref is stored in the prefs.js file in the Zotero profile directory. In Firefox it's stored via the chrome.storage API, which I believe (though I haven't confirmed) gets stored within the 'browser-extension-data' subdirectory of the Firefox profile directory, so you could do the same thing for that.
  • this is great information !

    Thank you.

    I have found the "extensions.zotero.httpServer.port" and the "connector.url".
    Again, I'm a first time user so I didn't even know about all this hidden pref and how to find them, but you gave me enough information to find how to access them (thank you again).

    Once I have made the change through the hidden options, I have found the edited value in the 2 locations you have indicated.
    I need to look for a simple way to manage it now. We might have more and more users using it.
    I think for a starter, 5 to 10 people will use it. Not all at the same time, but I guess we have to prepare for the worse and identify 1 specific port for every one of them.

    The only downside is if we forget to do the special port settings for new users, it will cause a mess between their librairies...


    Wouldn't it be smarter for Zotero to "link" the connector to the correct listening port based on the User Session ID ?

    Also, if Zotero is already running and listening on port 23119, it could refuse to be launched again on the same port and/or the second Zotero could automatically use another port and write it down somewhere so the connector could be made aware of the right port to send its data to.

    Is there anything in the pipe about such improvements ?

    Any other solution you think of about this issue ?

    Thank you :)
  • We're very limited in what we can access or determine about the environment on the connector side. There might be some options involving native messaging that we could look into, though they'd add a lot more complexity.
    Also, if Zotero is already running and listening on port 23119, it could refuse to be launched again on the same port
    We wouldn't refuse to launch, but warning that something (we wouldn't necessarily know that it's another copy of Zotero) is listening on that port might make sense.

    Note that the word processor plugin communicates using a different method and (I believe) can't currently be configured to work with multiple instances.

    We probably won't have anything better in the near future, but I've created an issue to track this.
  • I hope it could be a doable approach, it might need some work, however if you provide a service that would run at the startup of the server, it would listen on 1 port and all Zotero clients and connectors would be able to send information to this port.


    Let's say the main service listen on 23119.
    When UserA launches Zotero, the client would send the Zotero name of UserA to port 23119 and it would tell the service on which port it is listening in return (53000 for instance).

    If the connector is launched by UserA, then it would speak to the main service on port 23119 and tell its Zotero name, in return the main service would use the Zotero name to identify the user and answer back to the connector with the matching listening port (53000 in this example).

    From now on, the connector would directly speak to 53000 or if you can't do that, it would continue to speak to 23119 which would forward everything to 53000 (still using the Zotero name to find the correct port match).


    If the connector is launched before the Zotero client, then it could notify the user to launch the client first. It could know if the client is launched or not by talking to port 23119 which would answer back that for this specific Zotero user, there is no client registered at the moment.



    -----------------------------------------------

    Bbeside this idea, you said that the word processor plugin cannot work with multiple instances.
    Did I understand correctly and does it mean that even if we deal with Clients and Connectors ports, we won't be able to use Zotero within Word in such scenario ??
    It would be the end of the story for us :(

    thank you
  • if you provide a service that would run at the startup of the server, it would listen on 1 port and all Zotero clients and connectors would be able to send information to this port
    I'm afraid this doesn't work. We have no mechanism for starting a global service, the connector doesn't have an account associated with it by default, and a Zotero account isn't even required for using Zotero.

    This problem doesn't affect the vast majority of users, so this also isn't something we'll put a lot of time into. But there may be simpler solutions that we can explore. In the meantime, changing the prefs in an automated fashion at account setup is the best you can do.
    Bbeside this idea, you said that the word processor plugin cannot work with multiple instances.
    @adomasven would know the details. It might be different on different platforms.
  • Regarding word processors, there will certainly be conflicts for this with LibreOffice, since the plugin for it uses TCP sockets. Mac Word and Windows Word might work for multiple users, but we haven't specifically tested for it so there are no guarantees.
  • Hello,

    I have tested 2 Windows sessions with 1 different Zotero user / session and it seems to work fine once I have changed the ports.

    I'm not a Zotero user myself, so I didn't test it 100%, but I could call the respective users library from each Word.


    We are going to test this solution with 2 users and we'll see what kind of issue we'll encounter.

    thanks again for your help, and of course if something smarter comes in Zotero regarding multi users, you can be sure I'll be very happy :)
  • In our organization we have managed to get Zotero running on a terminal server. Each of the 20+ users gets a different browser connector port. This way they save publications in their own dbase. Luckily the Word plugin listens to the instance of the user, so that works too.

    The thing we are struggling with, is creating a script that sets the correct settings for each user. Scripting works for the settings in Zotero, but we haven't found a way to adjust the settings in the Chrome plugin. So, this must be done manually until a solution is found.
  • @Dennis_Z: Have you tested the Word plugin on a normal multi-user Windows computer, or just on a terminal server? I can't remember if we've received reports of that not working (i.e., of people seeing items from another user's library in the citation dialog).

    Current versions of the Mac Word plugin should theoretically work.
  • I haven't tested it on a normal multi-user Windows computer, as this does not seem to allow to link Windows user accounts to different Zotero instances.
  • Not sure what you mean by that. In the case of a normal multi-user system it would just be a profile directory within AppData pointing to a data directory in the home directory.
  • Sorry, my mistake. It was a while ago that I did some tests on a local PC. The accounts still exist, so I tested it again. Conclusion: yes, different Windows accounts can have their own instance of Zotero running, have a specific browser connector port set, and have a working MS Word plugin. It is not possible on a local Windows to have multiple user accounts being active simultaneously, so I cannot test that. But I confirm that different users do have their own Zotero dbase and MS Word does look to the correct dbase.
Sign In or Register to comment.