Help, after doing restart service won't start

Windows 10 machine
Tried Brave browser and IE
I just did my monthly restart/patch and now the service won’t start. I have tried to run the storage dashboard gui it can’t be reached. I am able to manually start the service under services.msc, but I still do not get the web dashboard. How do I get it up and running again?

I’ve attempted to:
sc start storagenode
restart-service storagenode

I ran this command:
storagenode.exe run --config-dir “C:\Program Files\Storj\Storage Node\config.yaml”

and received this:
2020-05-10T17:54:52.219-0400 INFO tracing disabled
2020-05-10T17:54:52.231-0400 WARN Operator email address isn’t specified.
2020-05-10T17:54:52.231-0400 ERROR Invalid configuration. {“error”: “operator wallet address isn’t specified”}
Error: operator wallet address isn’t specified

Restarted the PC again and received this error in powershell:
Stop-Service : Service ‘Storj V3 Storage Node (storagenode)’ cannot be stopped due to the following error: Cannot open
storagenode service on computer ‘.’.
At line:1 char:1

  • Stop-Service storagenode
  •   + CategoryInfo          : CloseError: (System.ServiceProcess.ServiceController:ServiceController) [Stop-Service],
      + FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Commands.StopServiceCommand

The error message is pretty clear, you didn’t specify an address for the payments to be sent to. I’m not very familliar with the windows setup but i am guessing your parameters are in the file at C:\Program Files\Storj\Storage Node\config.yaml ? If so could you post the contents here with any personal information masked?

The address should look something like this: 0xc562c0e5F8413Af5FXXXXXXXXXX1645AaF96Cc29
the X’s are just for privacy. It should be an ETH address

# how frequently bandwidth usage rollups are calculated
# bandwidth.interval: 1h0m0s

# how frequently expired pieces are collected
# collector.interval: 1h0m0s

# use color in user interface
# color: false

# server address of the api gateway and frontend app
# console.address:

# path to static resources
# console.static-dir: ""

# the public address of the node, useful for nodes behind NAT

# how frequently the node contact chore should run
# contact.interval: 1h0m0s

# Maximum Database Connection Lifetime, -1ns means the stdlib default
# db.conn_max_lifetime: -1ns

# Maximum Amount of Idle Database connections, -1 means the stdlib default
# db.max_idle_conns: 20

# Maximum Amount of Open Database connections, -1 means the stdlib default
# db.max_open_conns: 25

# address to listen on for debug endpoints
# debug.addr:

# expose control panel
# debug.control: false

# provide the name of the peer to enable continuous cpu/mem profiling for
# debug.profilername: ""

# If set, a path to write a process trace SVG to
# debug.trace-out: ""

# open config in default editor
# edit-conf: false

# how often to run the chore to check for satellites for the node to exit.
# graceful-exit.chore-interval: 15m0s

# the minimum acceptable bytes that an exiting node can transfer per second to the new node
# graceful-exit.min-bytes-per-second: 5.0 KB

# the minimum duration for downloading a piece from storage nodes before timing out
# graceful-exit.min-download-timeout: 2m0s

# number of concurrent transfers per graceful exit worker
# graceful-exit.num-concurrent-transfers: 5

# number of workers to handle satellite exits
# graceful-exit.num-workers: 4

# path to the certificate chain for this identity
identity.cert-path: C:\Users\johnn\AppData\Roaming\Storj\Identity\storagenode\identity.cert

# path to the private key for this identity
identity.key-path: C:\Users\johnn\AppData\Roaming\Storj\Identity\storagenode\identity.key

# if true, log function filename and line number
# log.caller: false

# if true, set logging to development mode
# log.development: false

# configures log encoding. can either be 'console' or 'json'
# log.encoding: console

# the minimum log level to log
log.level: info

# can be stdout, stderr, or a filename
log.output: winfile:///C:\Program Files\Storj\Storage Node\\storagenode.log

# if true, log stack traces
# log.stack: false

# address(es) to send telemetry to (comma-separated)
# metrics.addr:

# application name for telemetry identification
# storagenode.exe

# application suffix
# -release

# instance id prefix
# metrics.instance-prefix: ""

# how frequently to send up telemetry
# metrics.interval: 1m0s

# path to log for oom notices
# monkit.hw.oomlog: /var/log/kern.log

# maximum duration to wait before requesting data
# nodestats.max-sleep: 5m0s

# how often to sync reputation
# nodestats.reputation-sync: 4h0m0s

# how often to sync storage
# 12h0m0s

# operator email address have my

# operator wallet address
operator.wallet: 0xca4450b330C8836757989dC3 last digits removed

# whether or not preflight check for database is enabled.
# preflight.database-check: true

# whether or not preflight check for local system clock is enabled on the satellite side. When disabling this feature, your storagenode may not setup correctly.
# preflight.local-time-check: true

# how many concurrent retain requests can be processed at the same time.
# retain.concurrency: 5

# allows for small differences in the satellite and storagenode clocks
# retain.max-time-skew: 72h0m0s

# allows configuration to enable, disable, or test retain requests from the satellite. Options: (disabled/enabled/debug)
# retain.status: enabled

# public address to listen on
server.address: :28967

# log all GRPC traffic to zap logger
server.debug-log-traffic: false

# if true, client leaves may contain the most recent certificate revocation for the current certificate
# server.extensions.revocation: true

# if true, client leaves must contain a valid "signed certificate extension" (NB: verified against certs in the peer ca whitelist; i.e. if true, a whitelist must be provided)
# server.extensions.whitelist-signed-leaf: false

# path to the CA cert whitelist (peer identities must be signed by one these to be verified). this will override the default peer whitelist
# server.peer-ca-whitelist-path: ""

# identity version(s) the server will be allowed to talk to
# server.peer-id-versions: latest

# private address to listen on

# url for revocation database (e.g. bolt://some.db OR redis://
# server.revocation-dburl: bolt://C:\Program Files\Storj\Storage Node/revocations.db

# if true, uses peer ca whitelist checking
# server.use-peer-ca-whitelist: true

# total allocated bandwidth in bytes (deprecated)
storage.allocated-bandwidth: 0 B

# total allocated disk space in bytes
storage.allocated-disk-space: 6.0 TB

# how frequently Kademlia bucket should be refreshed with node stats
# storage.k-bucket-refresh-interval: 1h0m0s

# path to store data in
storage.path: S:\

# a comma-separated list of approved satellite node urls (unused)
# storage.whitelisted-satellites: ""

# how often the space used cache is synced to persistent storage
# storage2.cache-sync-interval: 1h0m0s

# how soon before expiration date should things be considered expired
# storage2.expiration-grace-period: 48h0m0s

# how many concurrent requests are allowed, before uploads are rejected. 0 represents unlimited.
# storage2.max-concurrent-requests: 0

# how frequently Kademlia bucket should be refreshed with node stats
# storage2.monitor.interval: 1h0m0s

# how much bandwidth a node at minimum has to advertise (deprecated)
# storage2.monitor.minimum-bandwidth: 0 B

# how much disk space a node at minimum has to advertise
# storage2.monitor.minimum-disk-space: 500.0 GB

# how long after OrderLimit creation date are OrderLimits no longer accepted
# storage2.order-limit-grace-period: 24h0m0s

# length of time to archive orders before deletion
# storage2.orders.archive-ttl: 168h0m0s

# duration between archive cleanups
# storage2.orders.cleanup-interval: 1h0m0s

# maximum duration to wait before trying to send orders
# storage2.orders.max-sleep: 5m0s

# timeout for dialing satellite during sending orders
# storage2.orders.sender-dial-timeout: 1m0s

# duration between sending
# storage2.orders.sender-interval: 1h0m0s

# timeout for sending
# storage2.orders.sender-timeout: 1h0m0s

# allows for small differences in the satellite and storagenode clocks
# storage2.retain-time-buffer: 48h0m0s

# how long to spend waiting for a stream operation before canceling
# 30m0s

# file path where trust lists should be cached
# C:\Program Files\Storj\Storage Node/trust-cache.json

# list of trust exclusions
# ""

# how often the trust pool should be refreshed
# 6h0m0s

# list of trust sources

# address for jaeger agent
# tracing.agent-addr:

# application name for tracing identification
# storagenode.exe

# application suffix
# -release

# buffer size for collector batch packet size
# tracing.buffer-size: 0

# how frequently to send up telemetry
# tracing.interval: 0s

# buffer size for collector queue size
# tracing.queue-size: 0

# how frequently to send up telemetry
# tracing.sample: 0

# Interval to check the version
# version.check-interval: 15m0s

# Request timeout for version checks
# version.request-timeout: 1m0s

# server address to check its version against
# version.server-address:

Sorry it’s so big, working on shrinking it

In the logs I can see where it loads correctly, following the same steps, and then after the restart it doesn’t seem to pull the information; same sequence though.

Hmm, from what i can see it looks okay, but as i said i’m running a linux setup so i’m not very familliar with windows setups.
Only thing i could suggest is to maybe put the values into quotation marks and to double check if the ETH address is valid. Weird that it also has a problem with the email though…

What do you mean you can see in the logs where it loads correctly? Maybe you were looking at old log entries?

This is from the initial setup of this node:

2020-04-29T12:37:01.192-0400 INFO Configuration loaded {“Location”: “C:\Program Files\Storj\Storage Node\config.yaml”}
2020-04-29T12:37:01.200-0400 INFO tracing disabled
2020-04-29T12:37:01.215-0400 INFO Operator email {“Address”: “”}
2020-04-29T12:37:01.216-0400 INFO Operator wallet {“Address”: “0xca4450b330C88removedBb6eE78A7c8099”}
2020-04-29T12:37:01.791-0400 INFO db.migration Database Version {“version”: 36}
2020-04-29T12:37:02.484-0400 INFO preflight:localtime start checking local system clock with trusted satellites’ system clock.
2020-04-29T12:37:03.136-0400 INFO preflight:localtime local system clock is in sync with trusted satellites’ system clock.
2020-04-29T12:37:03.136-0400 INFO bandwidth Performing bandwidth usage rollups
2020-04-29T12:37:03.136-0400 INFO Node 1k33ukRDRAZ5rACoo6kfWGTegmbD1uT9mjXUiS8kKSqDdLxQLS started
2020-04-29T12:37:03.136-0400 INFO Public server started on [::]:28967
2020-04-29T12:37:03.136-0400 INFO Private server started on
2020-04-29T12:37:03.144-0400 INFO trust Scheduling next refresh {“after”: “4h38m17.530692527s”}
2020-04-29T12:37:04.986-0400 INFO piecestore upload started {“Piece ID”: "TCYZSC

logs starting from restart:

2020-05-10T18:26:30.047-0400 INFO Operator email {“Address”: “”}
2020-05-10T18:26:30.047-0400 INFO Operator wallet {“Address”: “0xca4450noE78A7c8099”}
2020-05-10T18:39:17.525-0400 INFO Configuration loaded {“Location”: “C:\Program Files\Storj\Storage Node\config.yaml”}
2020-05-10T18:39:17.527-0400 INFO tracing disabled
2020-05-10T18:39:17.540-0400 INFO Operator email {“Address”: “”}
2020-05-10T18:39:17.540-0400 INFO Operator wallet {“Address”: “0xca4450b33NOE78A7c8099”

They just repeat on this step. I have restart my machine again to see if maybe it was just hanging, but now it stays at this.

Those logs look very promising.
It has successfully loaded your configuration and the values seem to be accepted by storj.
Is there no indicator on why it repeats the entries? Normally it should say the reason why it’s trying again in the logs

No, and I just had to go manually start the service again. The only weird thing is that prior to me restarting the machine I was getting failed uploads/downloads. I have a feeling it’s a windows thing, and not a storj problem. Fortunately it’s only a couple of weeks old, so I might just blow it out and start the process again.

Also, I just tested my storage to ensure that it wasn’t a faulty drive and I uploaded/downloaded 300GB across devices with no issue.

hmm, very weird.

Failing downloads and uploads is normal. I have failed uploads and downloads in the low two digit area within a few days usually. And also a lot of cancellations (45% for upload on my node). That just means the node has lost the “race” for a piece and another node got to store it instead. As long as your audits are successful you should be good on that.

I’m out of ideas unfortunately regarding the restarts.

Maybe the big boss @Alexey has some more ideas… I’m sure he’ll stuble upon this thread as he’s involved in most of the topics here

Good luck on resolving this swiftly.

Even crazier yet, I just checked my resource monitor and it shows that there are multiple connections to the box, however my bandwidth is showing <100 bits of data in/out.

I appreciate the help!

The paths should be C:\Users\johnn\AppData\Roaming\Storj\Identity\storagenode for both sections. So it should look like

path to the certificate chain for this identity
identity.cert-path: C:\Users\johnn\AppData\Roaming\Storj\Identity\storagenode

path to the private key for this identity
identity.key-path: C:\Users\johnn\AppData\Roaming\Storj\Identity\storagenode

Save config.yaml file and then restart the service.

Edit: I made a mistake, please ignore this post.

No, they looks right. They should contain the files as a destination points.

@Rawzy try to save it in UTF8 without BOM. Or better - remove the current config and create a new one with storagenode.exe setup --config-dir "C:\Program Files\Storj\Storage Node\\" --identity-dir "C:\Users\johnn\AppData\Roaming\Storj\Identity\storagenode\\", then modify only needed parts with the Notepad++
Seems your file could contain some weird characters and thus not be read correctly.

Also, if you have a config.yaml in the %AppData%\Storj\Storagenode it’s better to remove it, because it will be tried first.

1 Like

I appreciate everyone’s help. I ended up wiping everything and I changed my OS to linux instead. I figured with it being so new that it would just be better to restart and have a 100% reputation. My downside is that I was almost out of the vetting stage. Thanks again, Alex