36 votes

Resources and help for setting up a Tildes dev environment

I've been trying to set up a dev enviornment for Tildes, mainly so that I can actually test my MR (!136), and I've been running into a few issues.

However, since we also have a new influx of people who might be interested in contributing to Tildes, it seems like a good time to collect resources on setting up the dev environment, as well as helping anyone running into issues.

So, if you have issues or advice, post them here! I'll be adding my questions in a comment shortly.

Relevant wiki pages:


Edit: A more recent post on setting up the dev environment on Apple Silicon / M1 Macs

33 comments

  1. [3]
    Aeledfyr
    (edited )
    Link
    I personally ran into issues with getting vagrant set up; it seems like it only works with VirtualBox, but vagrant appears to not support VirtualBox 7.0, only VirtualBox 6.1, which appears to be a...

    I personally ran into issues with getting vagrant set up; it seems like it only works with VirtualBox, but vagrant appears to not support VirtualBox 7.0, only VirtualBox 6.1, which appears to be a broken package in Fedora... (I don't remember the exact details for this, I'll find the logs when I get a chance)

    Does anyone know how to get the vagrant setup running on something other than VirtualBox, or general advice?

    Edit: I think I've managed to get the virtualbox 6.1 install unbroken, so I'll see how far I get this time.
    Edit 2: Nope, it's still broken...

    With the default provider libvirt I get
    The box you're attempting to add doesn't support the provider
    you requested. Please find an alternate box or use an alternate
    provider. Double-check your requested provider to verify you didn't
    simply misspell it.
    
    If you're adding a box from HashiCorp's Vagrant Cloud, make sure the box is
    released.
    
    Name: debian/contrib-buster64
    Address: https://vagrantcloud.com/debian/contrib-buster64
    Requested provider: [:libvirt]
    

    and VirtualBox complains about the kernel module being missing, so I guess I'll work on fixing that.

    Update: After upgrading my entire distro (probably not necessary), going back to VirtualBox 7.0, and then manually installing a recent version of vagrant, I've managed to get vagrant running. (Support for VirtualBox 7.0 appears to have been added very recently.)

    6 votes
    1. [2]
      hamstergeddon
      Link Parent
      edit- just saw your update. But I'll leave the comment here in case anyone else wants to learn about the exciting world of default providers for Vagrant :P It's been a while since I worked with...

      edit- just saw your update. But I'll leave the comment here in case anyone else wants to learn about the exciting world of default providers for Vagrant :P

      It's been a while since I worked with Vagrant, so idk how much help I can be beyond this comment, but check this out -- https://developer.hashicorp.com/vagrant/docs/providers/basic_usage

      tl:dr -
      There are a few ways to do it. The quickest/easiest way is to just add a flag to the up command like this: vagrant up --provider=hyperv. Swapping "hyperv" for whichever supported provider you want. I believe you'd have to remember to include that flag each time your run the command though (could be mistaken).

      The best approach, imo, would be to set the provider in the Vagrantfile with config.vm.provider "hyperv", again being sure to swap "hyperv" out for your preference.

      The link above has more detailed instructions and examples, so check it out.

      5 votes
      1. Aeledfyr
        Link Parent
        Thanks for the help; I think I've got it working on VirtualBox... but I'm still getting weird issues that might be from the VirtualBox version being too new, or something like that. (If only this...

        Thanks for the help; I think I've got it working on VirtualBox... but I'm still getting weird issues that might be from the VirtualBox version being too new, or something like that. (If only this worked in a virtual machine that didn't need a specific versioned kernel module and distro support...)

        I think the main issue with the providers is that debian/contrib-buster64 only supports the virtualbox provider, so we're stuck with that anyway.

        2 votes
  2. codefrog
    Link
    Just wanted to offer a quick thank you for posting this. I made an account here a while ago, but after a few months stopped visiting very often. Now that reddit is destroying itself, I came to...

    Just wanted to offer a quick thank you for posting this. I made an account here a while ago, but after a few months stopped visiting very often.

    Now that reddit is destroying itself, I came to remember that I enjoyed my time here, and stopped back to see what is happening and to see if I might be able to contribute as I am a professional software dev.

    I appreciate that I was quickly able to find a post about it; thanks again.

    5 votes
  3. [6]
    Aeledfyr
    (edited )
    Link
    After getting vagrant working, the basic setup works; now I'm just running into issues with the code-formatting tools. Following the instructions from the wiki; I'm running invoke code-style-check...

    After getting vagrant working, the basic setup works; now I'm just running into issues with the code-formatting tools.

    Following the instructions from the wiki; I'm running invoke code-style-check --full, but it looks like it can't find stylelint.

    invoke code-style-check --full output
    (tildes) vagrant@buster:/opt/tildes$ invoke code-style-check --full
    Checking if Black would reformat any Python code... All done! ✨ 🍰 ✨
    248 files would be left unchanged.
    Checking SCSS style...
    internal/modules/cjs/loader.js:934
      throw err;
      ^
    
    Error: Cannot find module '/opt/tildes/node_modules/stylelint/bin/stylelint.js'
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:931:15)
        at Function.Module._load (internal/modules/cjs/loader.js:774:27)
        at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12)
        at internal/main/run_main_module.js:17:47 {
      code: 'MODULE_NOT_FOUND',
      requireStack: []
    }
    

    I guessed that it might be a missing npm install stylelint somewhere in the install script, so I tried that, but it seems to run into errors when installing, so I'm not sure what to do next. (I'm currently rebuilding the vagrant VM to test with a clean environment, but that takes a bit.)

    npm install stylelint output
    (tildes) vagrant@buster:/opt/tildes$ npm install stylelint
    npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
    npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
    npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
    npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
    npm WARN deprecated trim@0.0.1: Use String.prototype.trim() instead
    npm WARN deprecated @types/vfile-message@2.0.0: This is a stub types definition. vfile-message provides its own type definitions, so you do not need this installed.
    npm WARN tildes@1.0.0 No repository field.
    
    npm ERR! code ENOENT
    npm ERR! syscall open
    npm ERR! path /opt/tildes/node_modules/expand-brackets/node_modules/extend-shallow/package.json.3537302653
    npm ERR! errno -2
    npm ERR! enoent ENOENT: no such file or directory, open '/opt/tildes/node_modules/expand-brackets/node_modules/extend-shallow/package.json.3537302653'
    npm ERR! enoent This is related to npm not being able to find a file.
    npm ERR! enoent 
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /home/vagrant/.npm/_logs/2023-06-08T00_11_54_131Z-debug.log
    

    @Deimos do you have a general idea of what would be causing this / how I should approach fixing it?

    Edit:

    It looks like a buggy interaction between vagrant, VirtualBox, and npm install; the quick fix is to run npm ci to install the packages correctly. This merge request should make it work automatically, hopefully.

    3 votes
    1. [5]
      talklittle
      Link Parent
      Worked for me on a clean Vagrant VM running (from the host): $ vagrant ssh -c ". activate && invoke code-style-check --full" Got and adapted the command from git_hooks/pre-commit. Also can I ask...

      Worked for me on a clean Vagrant VM running (from the host):

      $ vagrant ssh -c ". activate && invoke code-style-check --full"
      

      Got and adapted the command from git_hooks/pre-commit.

      Also can I ask you to stop pinging Deimos please, he's already swamped as is with the huge influx of users. Other people will be happy to answer your troubleshooting questions, as demonstrated in this comment section.

      That said, it is great you and others have started to pick out issues from the issue tracker and start coding bugfixes. I am working on coordinating with Deimos on a solution for maintaining the repo, mostly through DMs so far, not ready to speak on it yet.

      6 votes
      1. [4]
        Aeledfyr
        (edited )
        Link Parent
        I wasn't sure whether to ping the second time; I only did because of basically the opposite response in the previous thread. I'll avoid pinging again; good luck with the maintenance / app...

        I wasn't sure whether to ping the second time; I only did because of basically the opposite response in the previous thread.

        I'll avoid pinging again; good luck with the maintenance / app development!


        $ vagrant ssh -c ". activate && invoke code-style-check --full"

        That command gives the exact same error for me on a clean vagrant VM.

        Commands and abbreviated output
        $ vagrant destroy
        $ vagrant up
        ...
        [WARNING]: Could not match supplied host pattern, ignoring: prod
        
        PLAY [prod] ********************************************************************
        skipping: no hosts matched
        
        PLAY RECAP *********************************************************************
        default                    : ok=174  changed=137  unreachable=0    failed=0    skipped=2    rescued=0    ignored=1   
        ...
        $ vagrant provision
        ...
        [WARNING]: Could not match supplied host pattern, ignoring: prod
        
        PLAY [prod] ********************************************************************
        skipping: no hosts matched
        
        PLAY RECAP *********************************************************************
        default                    : ok=142  changed=7    unreachable=0    failed=0    skipped=29   rescued=0    ignored=0   
        ...
        $ vagrant ssh -c ". activate && invoke code-style-check --full"
        Checking if Black would reformat any Python code... All done! ✨ 🍰 ✨
        248 files would be left unchanged.
        Checking SCSS style...
        internal/modules/cjs/loader.js:934
          throw err;
          ^
        
        Error: Cannot find module '/opt/tildes/node_modules/stylelint/bin/stylelint.js'
            at Function.Module._resolveFilename (internal/modules/cjs/loader.js:931:15)
            at Function.Module._load (internal/modules/cjs/loader.js:774:27)
            at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12)
            at internal/main/run_main_module.js:17:47 {
          code: 'MODULE_NOT_FOUND',
          requireStack: []
        }
        

        From the wiki:

        Next, run vagrant provision which will check to make sure the state of the VM is correct. Assuming everything went as it should, this should finish very quickly and the summary at the end of the output should report no changed or failed states.

        For me, vagrant provision gives a few changed states, so could that be an issue?

        Logs
        TASK [pgbouncer : Add pgbouncer.ini] *******************************************
        changed: [default]
        ...
        TASK [postgresql_tildes_dbs : Add database to pgbouncer.ini] *******************
        changed: [default]
        ...
        TASK [postgresql_tildes_dbs : Add database to pgbouncer.ini] *******************
        changed: [default]
        
        TASK [postgresql_tildes_dbs : Trigger handlers to run manually for postgresql/pgbouncer updates] ***
        
        RUNNING HANDLER [pgbouncer : Reload pgbouncer] *********************************
        changed: [default]
        ...
        TASK [redis : Create Redis configuration file] *********************************
        changed: [default]
        ...
        TASK [redis_module_cell : Load redis-cell module in Redis configuration] *******
        changed: [default]
        ...
        RUNNING HANDLER [redis : Restart redis] ****************************************
        changed: [default]
        

        The only things I can see are potentially the VirtualBox version mismatching?

        ==> default: Checking for guest additions in VM...
            default: The guest additions on this VM do not match the installed version of
            default: VirtualBox! In most cases this is fine, but in rare cases it can
            default: prevent things such as shared folders from working properly. If you see
            default: shared folder errors, please make sure the guest additions within the
            default: virtual machine match the version of VirtualBox you have installed on
            default: your host and reload your VM.
            default: 
            default: Guest Additions Version: 6.1.26
            default: VirtualBox Version: 7.0
        

        (since at least in the npm install case, it looks like a filesystem issue with a host-shared folder?)

        Tool versions: (on Fedora 38)

        $ vagrant --version
        Vagrant 2.3.6
        $ VBoxManage --version
        7.0.8_rpmfusionr156879
        

        I can post the full vagrant up / vagrant provision logs if needed.

        3 votes
        1. [3]
          Aeledfyr
          Link Parent
          It looks like there are some semi-known issues with vagrant and npm install? I'm not sure if that's causing issues with the install script itself, but it matches the errors I get when trying to...

          It looks like there are some semi-known issues with vagrant and npm install?

          I'm not sure if that's causing issues with the install script itself, but it matches the errors I get when trying to manually install stylelint

          https://github.com/hashicorp/vagrant/issues/11842

          A working workaround:

          mkdir -p ~/tildes_node_modules
          sudo mount --bind ~/tildes_node_modules node_modules
          npm install
          

          and then everything appears to work. (Basically putting node_modules in a VM's filesystem instead of in a shared folder to work around the issue.)

          2 votes
          1. [2]
            talklittle
            Link Parent
            Ah, sorry, that bug slipped my mind. Indeed it breaks on a clean git checkout. I filed an MR for that before (I think it is the same issue, at least):...

            Ah, sorry, that bug slipped my mind. Indeed it breaks on a clean git checkout. I filed an MR for that before (I think it is the same issue, at least): https://gitlab.com/tildes/tildes/-/merge_requests/133

            It clicked when you mentioned the node_modules directory is not being created.

            4 votes
            1. Aeledfyr
              Link Parent
              Yep, it looks like npm ci does the right thing; thanks! I'll check from a clean VM and mention the error messages in the MR so it's easier for others to find in the meantime (though hopefully...

              Yep, it looks like npm ci does the right thing; thanks!

              I'll check from a clean VM and mention the error messages in the MR so it's easier for others to find in the meantime (though hopefully it'll end up merged at some point).

              3 votes
  4. Orys
    Link
    I had trouble setting up my IDE to detect packages, as they were installed on Vagrant and not on my host machine. Python was installed on my host, but in a more recent version than the VM so when...

    I had trouble setting up my IDE to detect packages, as they were installed on Vagrant and not on my host machine.

    Python was installed on my host, but in a more recent version than the VM so when I tried to install the packages from requirements it didn’t work.

    As Im not a Python dev and I’m using PyCharm community, the Vagrant integration and ssh interpreter are not available.

    What I figured out with the help of ChatGPT :

    • Install Python 3.9 (python and python3.9 are both installed)
    • Setup venv, using python3.9 :
    python3.9 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    

    Then I got some errors and had to install some packages like python3-dev, libluajit-5.1-dev, etc.

    After that, set the local virtual environment as the interpreter in PyCharm:
    Go to File > Settings > Project: <Your Project Name> > Python Interpreter.
    Click on the gear icon and select Add.
    In the left panel of the dialog that opens, select Virtualenv Environment.
    In Location, select the venv directory you just created. Then click OK.

    3 votes
  5. [8]
    Cock
    Link
    Has anyone been successful in getting this running on an M series apple processor? Virtualbox has limited support for it and any instance I create gets aborted. Not sure I know a way around this.

    Has anyone been successful in getting this running on an M series apple processor? Virtualbox has limited support for it and any instance I create gets aborted. Not sure I know a way around this.

    3 votes
    1. [7]
      Aeledfyr
      Link Parent
      In theory you might be able to use a different provider? (See @hamstergeddon's comment) The current Vagrantfile uses debian/contrib-buster64 which only supports VirtualBox, but it looks like...

      In theory you might be able to use a different provider? (See @hamstergeddon's comment)

      The current Vagrantfile uses debian/contrib-buster64 which only supports VirtualBox, but it looks like generic/debian10 is similar, with support for more providers. The current setup relies on synced folders though, and I'm not sure how well those work with non-VirtualBox providers. (You'll also have to change the cpu/memory config in the Vagrantfile to apply to the provider you choose.)

      I haven't managed to get vagrant to run with anything other than VirtualBox due to Fedora/SELinux issues, but hopefully you'll find something that works.

      4 votes
      1. [6]
        Cock
        Link Parent
        Hmm.. I wish they were using docker instead.

        Hmm.. I wish they were using docker instead.

        1. [5]
          Aeledfyr
          Link Parent
          I'm not particularly well-versed in docker, but you might be able to use a docker image instead of vagrant? The vagrant setup appears to just be setting up a debian 10 image with some bind mounts...

          I'm not particularly well-versed in docker, but you might be able to use a docker image instead of vagrant?

          The vagrant setup appears to just be setting up a debian 10 image with some bind mounts and forwarded ports, and then using ansible to deploy a dev environment; as long as there aren't nested containers or other kernel-level things being used, the same should be possible with a docker container.

          config.vm.synced_folder "tildes/", "/opt/tildes/"
          config.vm.synced_folder "ansible/", "/srv/ansible"
          config.vm.network "forwarded_port", guest: 443, host: 4443
          config.vm.network "forwarded_port", guest: 9090, host: 9090
          
          1 vote
          1. [4]
            seang96
            Link Parent
            I saw 2 attempts of this talked about in gitlab. One got it running but I don't think he finished it, I believe there were cron jobs that they didn't get added. If someone can get docker builds...

            I saw 2 attempts of this talked about in gitlab. One got it running but I don't think he finished it, I believe there were cron jobs that they didn't get added. If someone can get docker builds maintained that would make development easier and people deploying their own in k8s would be nice.

            3 votes
            1. [3]
              Cock
              Link Parent
              Here is as far as I got.. it is erroring on the "Create group for app user" on ansible startup. I am stuck at this point. # Use an ARM base image FROM debian:buster # Install required packages RUN...

              Here is as far as I got.. it is erroring on the "Create group for app user" on ansible startup. I am stuck at this point.

              # Use an ARM base image
              FROM debian:buster
              
              # Install required packages
              RUN apt-get update && apt-get install -y \
                  curl \
                  python3-distutils \
                  openssh-client
              
              # Copy the application files
              COPY tildes/ /opt/tildes/
              COPY ansible/ /srv/ansible/
              
              # Install pip
              RUN apt-get install -y python3-pip
              
              # Install Ansible
              RUN pip3 install ansible
              
              # Set the working directory
              WORKDIR /srv/ansible
              
              # Expose ports
              EXPOSE 443 9090
              
              # Run the provisioning playbook
              CMD ansible-playbook -vv -i . playbook.yml --inventory=hosts --connection=local
              
              1 vote
              1. [2]
                seang96
                (edited )
                Link Parent
                I'm interested in getting this working but i currently have 0 knowledge on tildes backend, if i get a chance this weekend I'll take a crack at it. Edit: took a look at the latest attempt. There...

                I'm interested in getting this working but i currently have 0 knowledge on tildes backend, if i get a chance this weekend I'll take a crack at it.

                Edit: took a look at the latest attempt. There appears to be a lot more they have set up then yours. Source

                1 vote
                1. Cock
                  (edited )
                  Link Parent
                  Yeah this was more of just translating the Vagrantfile to a Dockerfile and seeing if it'd be that easy, and it wasn't of course! So I stopped there. I have never worked with ansible and the setup...

                  Yeah this was more of just translating the Vagrantfile to a Dockerfile and seeing if it'd be that easy, and it wasn't of course! So I stopped there. I have never worked with ansible and the setup that is involved with it. Let me know if you get that guys fork working, it'd be great to hear.

                  Edit:
                  Ran the docker-compose with this guys fork in an up to date tildes fork. It seems that it has since broken with recent changes.

                  1 vote
  6. hamstergeddon
    Link
    By any chance is there a way to quickly generate dummy data so I've got a more prod-like environment to make changes on? Or would I need to manually create any test data via invoke shell or the...

    By any chance is there a way to quickly generate dummy data so I've got a more prod-like environment to make changes on? Or would I need to manually create any test data via invoke shell or the UI? Or alternatively, is there a SQL file floating out there somewhere with dummy data?

    2 votes
  7. hamstergeddon
    (edited )
    Link
    Thanks for posting this! I wish I knew Python so I could contribute on the backend (I'm a PHP guy), but maybe I'll see if there are any frontend things I can work on to help out (I'm also a JS guy!).

    Thanks for posting this! I wish I knew Python so I could contribute on the backend (I'm a PHP guy), but maybe I'll see if there are any frontend things I can work on to help out (I'm also a JS guy!).

    1 vote
  8. [3]
    ShinRamyun
    Link
    Tangentially related, but has anyone forked/used the Tildes source to spin up their own website yet?

    Tangentially related, but has anyone forked/used the Tildes source to spin up their own website yet?

    1 vote
    1. [2]
      Aeledfyr
      Link Parent
      I believe some communities have tried it in the past, but I don't think there are currently other active instances. (the main example). I don't think there are currently good docs for how to...

      I believe some communities have tried it in the past, but I don't think there are currently other active instances. (the main example).

      I don't think there are currently good docs for how to deploy it (issue #564) but it should be doable, with some work.

      2 votes
  9. [8]
    updawg
    Link
    I am trying to get everything set up so that I can start making contributions. I'm following the Tildes guide, although I didn't sync my fork to the official repository because I didn't understand...

    I am trying to get everything set up so that I can start making contributions. I'm following the Tildes guide, although I didn't sync my fork to the official repository because I didn't understand what I was supposed to look at in the first link.

    When I run vagrant up (or, more accurately, vagrant provision) everything proceeds swimmingly until

    TASK [nodejs : Install npm packages defined in package.json] *******************

    At which point I get the following failure message (I have spaced it out to make it easier to read):

    fatal: [default]: FAILED! =>
    {"changed": false,
    "cmd": "/usr/bin/npm ci --no-bin-links",
    

    "msg": "npm WARN prepare removing existing node_modules/ before installation\nnpm ERR! code EPROTO\nnpm ERR! syscall symlink\nnpm ERR! path ../semver/bin/semver\nnpm ERR! dest /opt/tildes/node_modules/.bin/semver\nnpm ERR! errno -71\nnpm ERR! EPROTO: protocol error, symlink '../semver/bin/semver' -> '/opt/tildes/node_modules/.bin/semver'\n\nnpm ERR! A complete log of this run can be found in:\nnpm ERR! /home/vagrant/.npm/_logs/2023-09-10T00_56_41_305Z-debug.log",

    "rc": 185,

    "stderr": "npm WARN prepare removing existing node_modules/ before installation\nnpm ERR! code EPROTO\nnpm ERR! syscall symlink\nnpm ERR! path ../semver/bin/semver\nnpm ERR! dest /opt/tildes/node_modules/.bin/semver\nnpm ERR! errno -71\nnpm ERR! EPROTO: protocol error, symlink '../semver/bin/semver' -> '/opt/tildes/node_modules/.bin/semver'\n\nnpm ERR! A complete log of this run can be found in:\nnpm ERR! /home/vagrant/.npm/_logs/2023-09-10T00_56_41_305Z-debug.log\n",

    "stderr_lines": ["npm WARN prepare removing existing node_modules/ before installation",
    "npm ERR! code EPROTO",
    "npm ERR! syscall symlink",
    "npm ERR! path ../semver/bin/semver",
    "npm ERR! dest /opt/tildes/node_modules/.bin/semver",
    "npm ERR! errno -71",
    "npm ERR! EPROTO: protocol error, symlink '../semver/bin/semver' -> '/opt/tildes/node_modules/.bin/semver'",
    "",
    "npm ERR! A complete log of this run can be found in:",
    "npm ERR!     /home/vagrant/.npm/_logs/2023-09-10T00_56_41_305Z-debug.log"],
    "stdout": "", "stdout_lines": []}
    

    I get that this has to do with NPM not working inside vagrant, but I can't figure out what to do. My assumption is that it is trying to run /usr/bin/npm ci --no-bin-links from inside Vagrant but I can't tell how I can either fix or work around this. I tried running npm install --no-bin-links; that gave me the following:

    npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\Peter\OneDrive\Tildes\tildes\package.json'
    npm notice created a lockfile as package-lock.json. You should commit this file.
    npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\Peter\OneDrive\Tildes\tildes\package.json'
    npm WARN tildes No description
    npm WARN tildes No repository field.
    npm WARN tildes No README data
    npm WARN tildes No license field.
    
    up to date in 0.529s
    found 0 vulnerabilities
    

    I'm totally lost with this. I vaguely understand what it's trying to do, but I have no clue what I need to do. Perhaps I should have changed some settings when I was installing VirtualBox or VagrantAny help would be greatly appreciated.

    1 vote
    1. [6]
      talklittle
      Link Parent
      Does the issue happen on a clean Git checkout? I.e. clone into a new empty directory. The npm ci change was to fix an issue with node_modules directory not being created. However I can imagine...

      Does the issue happen on a clean Git checkout? I.e. clone into a new empty directory.

      The npm ci change was to fix an issue with node_modules directory not being created. However I can imagine cases where the node_modules was already created a different way, and then the switch to npm ci might have some permissions or symlink conflicts, or something like that.

      2 votes
      1. [5]
        updawg
        Link Parent
        Are you saying to start vagrant in an empty directory? There was nothing else in the folder when I cloned tildes with git.

        Are you saying to start vagrant in an empty directory? There was nothing else in the folder when I cloned tildes with git.

        1. [4]
          talklittle
          Link Parent
          Ah okay. That might not be the issue then. An even more fundamental thing is the fact you appear to be running on Windows. Tildes and its dependencies probably expect a Unix environment, Linux in...

          Ah okay. That might not be the issue then.

          An even more fundamental thing is the fact you appear to be running on Windows. Tildes and its dependencies probably expect a Unix environment, Linux in particular. Maybe you will have better luck running in WSL?

          Edit: But I have no idea how Vagrant will interact with WSL. Maybe someone else knows more about running this stuff on Windows.

          1. [2]
            updawg
            Link Parent
            I thought the whole point of running Vagrant/VirtualBox was that it didn't matter what OS, etc you were running. Thanks for the help, though. And thanks for all the years of reddit is fun and for...

            I thought the whole point of running Vagrant/VirtualBox was that it didn't matter what OS, etc you were running.

            Thanks for the help, though. And thanks for all the years of reddit is fun and for recommending Tildes!

            1 vote
            1. talklittle
              Link Parent
              To some degree. In this case I think there's a complication because it's mounting your local host directory into the guest VM, and there is likely a filesystem mismatch, as the error message...

              I thought the whole point of running Vagrant/VirtualBox was that it didn't matter what OS, etc you were running.

              To some degree. In this case I think there's a complication because it's mounting your local host directory into the guest VM, and there is likely a filesystem mismatch, as the error message mentions a problem with symlinks.

              I just did a quick search and there might be a workaround: https://stackoverflow.com/questions/33186123/npm-install-errors-on-vagrant-homestead-windows-eproto-protocol-error-symlink

              See the answers about modifying the Vagrantfile and adding a setting to allow symlinks.

          2. Wes
            Link Parent
            It's supposed to run on Windows, and work has been completed in the past to help it run there. However the build process may have bit rotted so that it's no longer functional.

            An even more fundamental thing is the fact you appear to be running on Windows. Tildes and its dependencies probably expect a Unix environment, Linux in particular.

            It's supposed to run on Windows, and work has been completed in the past to help it run there. However the build process may have bit rotted so that it's no longer functional.

            1 vote
    2. talklittle
      (edited )
      Link Parent
      Update for posterity (pasted from my other comment): Edit 2: Found a proper fix. Don't run as administrator; that's bad and shouldn't be required....

      Update for posterity (pasted from my other comment):

      Edit 2: Found a proper fix. Don't run as administrator; that's bad and shouldn't be required.

      https://gitlab.com/tildes/tildes/-/merge_requests/153

      After @Deimos merges this, Vagrant provisioning should work on Windows again.

      Old bad solution

      https://gitlab.com/tildes/tildes/-/merge_requests/152

      Make sure your VM is stopped (vagrant halt) and then apply that Vagrantfile patch and then while running Windows command prompt as Administrator run: vagrant up --provision

      Edit: Apparently a patch is unnecessary; symlinks may be enabled by default, as long as running as Administrator.

      1 vote
  10. Aeledfyr
    Link
    (cc @Merry, @Deimos from the other thread)

    (cc @Merry, @Deimos from the other thread)

    1 vote